Свободная динамическая память, выделенная 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).
Чтобы освободить пространство в куче в приложениях C MATLAB, вызовите mxFree
вместо ANSI® C
free функция.
В файлах MEX, но за исключением MAT или автономных приложений engine, средство управления памятью 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