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