主要内容

mdlterminate.

执行终止仿真所需的任何操作

必需的

是的

语言

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 
            

也可以看看

sssetOptions.终止

在R2006A之前介绍