Свободная динамическая память выделяется 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