Main Content


Specify user data


void ssSetUserData(SimStruct *S, void *data)



SimStruct that represents an S-Function block.


User data.


Stores a pointer to the memory location containing the S-function's user data. To avoid memory leaks, the S-function must free this memory location during the call to mdlTerminate.

An S-function containing user data must perform the following steps.

  1. Allocate memory for the user data, using a customized structure to store more complicated data.

  2. Set the SS_OPTION_CALL_TERMINATE_ON_EXIT option in mdlInitializeSizes, to ensure the Simulink® engine always calls the mdlTerminate function.

  3. Store the pointer to the memory location in the user data, using a call to ssSetUserData.

  4. In mdlTerminate, use ssGetUserData to retrieve the pointer to the memory location and free the memory.

See Creating Run-Time Parameters from Multiple S-Function Parameters for an example that uses user data in conjunction with run-time parameters.


You cannot access user data from within a Target Language Compiler (TLC) file. Use DWork vectors instead of user data if you need to write a TLC-file to inline the S-function during code generation with Simulink Coder™. For an example using DWork vectors, see sfcndemo_sfun_rtwdwork.


C, C++


See the S-function sfun_runtime4.c used in sfcndemo_runtime.

Version History

Introduced before R2006a