执行终止仿真所需的任何操作
是的
C,C ++
void mdltermate(Simstruct * s)
S.
Simstruct代表S函数块。
此方法执行任何操作,例如释放存储器,必须在终止模拟时或当S函数块被销毁时(例如,从模型中删除时)。在快速重启模式下,在每种模拟结束时调用此方法。
在C mex s函数中,mdlterminate.
仿真后调用方法(mdlstart.
叫做)。
另外,如果是ss_option_call_termines_on_exit.
选项设置为给定的S函数,如果mdlinitializatize
被调用,然后用户保证Simulink将调用金宝appmdlterminate.
。设置的一个原因ss_option_call_termines_on_exit.
选项是分配内存mdlinitializatize
而不是等到mdlstart.
。
注意Simulink金宝app呼叫mdlinitializatize
在许多情况下,包括编译和模拟。金宝appSimulink也会打电话mdlinitializatize
在模型编辑期间,如果执行操作,例如参数的设置。
在C MEX S函数中,使用unused_arg.
宏如果是mdlterminate.
函数不执行需要SIMSTRUCT的任何操作S.
表明S.
输入参数是必需的,但在回调的正文中不使用。为此,请插入该行
unused_arg(s)
在任何声明之后mdlterminate.
。
笔记
如果你有金宝app®编码器™,当生成包含此方法的非inlined C mex s函数的代码时,请确保该方法未包装#f定义(matlab_mex_file)
陈述。例如:
#f定义(matlab_mex_file)静态void mdlterminate(simstruct * s){/ *在此处添加mdlterminate代码*} #endif
这定义
声明使这是mdlterminate.
方法仅适用于MATLAB®MEX文件。如果S函数没有内嵌,金宝appSimulink编码器不能使用此方法,从而导致链接或运行时错误。
假设您的s函数分配内存块mdlstart.
并将指针保存到块中的块垫料
向量。以下代码片段将释放此内存。
{int i;for(i = 0; i