文档

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,,,,终止

在R2006a之前引入