Выполнение любых действий, необходимых один раз после завершения моделирования
Да
C, C++
void mdlCleanupRuntimeResources(SimStruct *S)
S SimStruct представляет S-функциональный блок.
Этот метод выполняет любые действия, такие как освобождение памяти, которые должны выполняться при завершении моделирования или при уничтожении S-функционального блока (например, при удалении из модели).
В S-функциях C MEX mdlCleanupRuntimeResources вызывается после моделирования (mdlSetupRuntimeResources вызывается) и отменяет действия, выполняемые mdlSetupRuntimeResources.
Примечание
Если у вас есть Simulink ® Coder™, при создании кода для неинлинной C MEX S-функции, содержащей этот метод, убедитесь, что метод не заключен в #if defined(MATLAB_MEX_FILE) заявление. Например:
#if defined(MATLAB_MEX_FILE)
static void mdlCleanupRuntimeResources(SimStruct *S)
{
/* Add mdlCleanupRuntimeResources code here *
}
#endif define оператор делает mdlCleanupRuntimeResources метод доступен только для файла MATLAB ® MEX. Если S-функция не встроена, Simulink Coder не может использовать этот метод, что приводит к ошибкам канала или времени выполнения.
Предположим, что функция S выделяет блоки памяти в mdlSetupRuntimeResources и сохраняет указатели на блоки в PWork вектор. Следующий фрагмент кода освободит эту память.
#define MDL_CLEANUP_RUNTIME_RESOURCES
static void mdlCleanupRuntimeResources(SimStruct *S)
{
int i;
for (i = 0; i<ssGetNumPWork(S); i++) {
if (ssGetPWorkValue(S,i) != NULL) {
free(ssGetPWorkValue(S,i));
}
}
}