Свободная динамическая память выделяется mxCalloc, mxMalloc, mxRealloc, mxArrayToString, или функциями mxArrayToUTF8String
#include "matrix.h" void mxFree(void *ptr);
#include "fintrf.h" subroutine mxFree(ptr) mwPointer ptr
ptrУказатель на начало любого пакета памяти, выделенного mxCalloc, mxMalloc, или mxRealloc. Если ptr NULL указатель, функция ничего не делает.
mxFree освобождает пространство "кучи" с помощью MATLAB® средство управления памятью. Эта функция гарантирует правильное управление памятью по ошибке и аварийное прекращение работы (Ctrl+C) условия.
Чтобы освободить пространство "кучи" в приложениях MATLAB C, вызвать mxFree вместо ANSI® C
free функция.
В файлах MEX, но, исключая MAT или автономные приложения механизма, средство управления памятью MATLAB ведет список всей памяти, выделенной следующими функциями:
mxCalloc
mxMalloc
mxRealloc
mxArrayToString
mxArrayToUTF8String
Средство управления памятью автоматически освобождает все пакеты, управляемые файлом MEX, когда файл MEX завершается, и управление возвращается к подсказке MATLAB. mxFree также удаляет пакет памяти из списка управления памятью пакетов.
Когда mxFree появляется в MAT или механизме автономное приложение MATLAB, он просто освобождает непрерывное пространство "кучи", которое начинает в адресе ptr.
В файлах MEX, вашем использовании mxFree зависит от того, является ли заданный пакет памяти персистентным или нестойким. По умолчанию, пакеты памяти, созданные mxCalloc, mxMalloc, mxRealloc, mxArrayToString, и mxArrayToUTF8String являются нестойкими. Средство управления памятью автоматически освобождает всю нестойкую память каждый раз, когда файл MEX завершается. Таким образом, даже если вы не вызываете mxFree, MATLAB заботится об освобождении памяти для вас. Тем не менее, это - хорошая методика программирования, чтобы освободить память, когда вы посредством использования его. Выполнение так обычно делает целую систему запущенной более эффективно.
Если приложение вызывает mexMakeMemoryPersistent, заданный пакет памяти становится персистентным. Когда файл MEX завершается, средство управления памятью не освобождает пакеты постоянной памяти. Поэтому единственный способ освободить пакет постоянной памяти состоит в том, чтобы вызвать mxFree. Как правило, вызов файлов MEX mexAtExit указывать обработчик очистки. Вызовы обработчика очистки mxFree.
Не использовать mxFree для mxArray созданный любыми другими функциями в Matrix Library API. Использование mxDestroyArray вместо этого.
Смотрите эти примеры в :matlabroot/extern/examples/mx
Смотрите эти примеры в :matlabroot/extern/examples/refbook
Смотрите эти примеры в :matlabroot/extern/examples/mex
mexAtExit, mexMakeArrayPersistent, mexMakeMemoryPersistent, mxCalloc, mxDestroyArray, mxMalloc, mxRealloc, mxArrayToString, mxArrayToUTF8String