mdlterminate
在终止模拟时执行任何行动
必需的
是的
语言
C,C ++
句法
void mdlterminate(simstruct *s)
参数
-
s
-
代表S功能块的SIMSTRUCT。
描述
此方法执行任何动作,例如释放内存,这些动作必须在终止模拟或S函数块被破坏时(例如,从模型中删除时)时必须执行。在快速重新启动模式下的每个模拟的末尾调用此方法。
在c mex s函数中mdlterminate
在模拟后调用方法(mdlstart
叫做)。
另外,如果ss_option_call_terminate_on_exit
设置为给定的S功能设置的选项,如果mdlinitialsizes
被称为,然后保证用户simulink会调用金宝appmdlterminate
。设置ss_option_call_terminate_on_exit
选项是分配内存mdlinitialsizes
而不是等到mdlstart
。
请注意,simuli金宝appnk呼叫mdlinitialsizes
在许多情况下,包括汇编和仿真。金宝appSimulink也会致电mdlinitialsizes
在模型编辑期间,如果您执行类似参数设置之类的操作。
在C MEX S函数中,使用UNUSED_ARG
宏如果是mdlterminate
功能不执行任何需要Simstruct的动作s
表明s
需要输入参数,但在回调正文中不使用。为此,插入线
UNUSUSE_ARG(S)
在任何声明之后mdlterminate
。
笔记
如果你有金宝app®CODER™,当生成包含此方法的非线c mex s函数的代码时,请确保该方法未包装在一个#如果定义(matlab_mex_file)
陈述。例如:
#if定义(matlab_mex_file)静态void mdlterminate(simStruct * s){ / *在此处添加mdlterminate代码 *} #endif
这定义
声明使得mdlterminate
仅可用于MATLAB的方法®MEX文件。如果s函数未夹住,金宝appSimulink编码器无法使用此方法,导致链接或运行时错误。
例子
假设您的s功能分配内存块mdlstart
并将指针保存到块中PWORK
向量。以下代码片段将释放此内存。
{int i;for(i = 0; i
也可以看看
Ssetoptions
,,,,终止