Свободная динамическая память, выделенная 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 завершается. Таким образом, даже если вы не звоните mxFreeMATLAB заботится об освобождении памяти для вас. Тем не менее, это хорошая методика программирования, чтобы удалить память, когда вы через использование. Это, как правило, повышает эффективность работы всей системы.
Если приложение вызывает 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