mdlTerminate
执行模拟终止时所需的任何操作
要求
是的
语言
C, c++
语法
(SimStruct *S)
参数
-
年代
-
SimStruct表示一个S-Function块。
描述
此方法执行在模拟终止或S-Function块被销毁(例如从模型中删除)时必须执行的任何操作,例如释放内存。在快速重启模式下,每次模拟结束时都会调用此方法。
在C MEX s -函数中mdlTerminate
方法在模拟(mdlStart
叫)。
此外,如果SS_OPTION_CALL_TERMINATE_ON_EXIT
选项为给定的s函数设置,如果mdlInitializeSizes
,那么用户是保证Simulink将调用万博1manbetxmdlTerminate
.设置的一个原因是SS_OPTION_CALL_TERMINATE_ON_EXIT
选项是分配内存在mdlInitializeSizes
而不是等到mdlStart
.
注意Simulink万博1manbetx调用mdlInitializeSizes
在多种情况下,包括编译和仿真。万博1manbetxSimulink也会调用mdlInitializeSizes
在模型编辑过程中,如果您执行了参数设置等操作。
在C MEX s -函数中,请使用UNUSED_ARG
宏,如果mdlTerminate
函数不执行任何需要SimStruct的操作年代
以表明年代
Input参数是必需的,但不在回调函数体中使用。要做到这一点,插入一行
UNUSED_ARG (S)
在mdlTerminate
.
请注意
如果你有万博1manbetx®编码器™,当为包含此方法的非内联C MEX s函数生成代码时,请确保该方法没有包装在#如果定义(MATLAB_MEX_FILE)
声明。例如:
#if defined(MATLAB_MEX_FILE) static void mdlTerminate(SimStruct *S){/*在这里添加mdlTerminate代码*}#endif . xml
的定义
语句使mdlTerminate
方法,仅适用于MATLAB®墨西哥人文件。如果s函数不是内联的,万博1manbetx仿真软件编码器无法使用此方法,导致链接或运行时错误。
例子
假设你的s函数分配内存块mdlStart
并保存指向块的指针PWork
向量。下面的代码片段将释放此内存。
{int i;For (i = 0;我< ssGetNumPWork(年代);i++) {if (ssGetPWorkValue(S,i) != NULL) {free(ssGetPWorkValue(S,i));}}}
另请参阅
版本历史
R2006a之前介绍