Свободная динамическая память, выделенная функциями 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 ®
Cfree функция.
В файлах MEX, но исключая автономные приложения MAT или Engine, средство управления памятью MATLAB поддерживает список всей памяти, выделенной следующими функциями:
mxCalloc
mxMalloc
mxRealloc
mxArrayToString
mxArrayToUTF8String
Средство управления памятью автоматически освобождает все участки, управляемые файлом MEX, когда файл MEX завершается, и элемент управления возвращается в подсказку MATLAB. mxFree также удаляет участок памяти из списка управления памятью участков.
Когда mxFree появляется в автономном приложении MATLAB MAT или модуля, оно просто освобождает смежное пространство кучи, которое начинается по адресу ptr.
В файлах MEX использование mxFree зависит от того, является ли указанный участок памяти постоянным или несуществующим. По умолчанию участки памяти, созданные mxCalloc, mxMalloc, mxRealloc, mxArrayToString, и mxArrayToUTF8String являются несуществующими. Средство управления памятью автоматически освобождает всю несуществующую память по завершении работы MEX-файла. Таким образом, даже если вы не звоните mxFreeMATLAB позаботится об освобождении памяти для вас. Тем не менее, это хорошая практика программирования, чтобы освободить память, когда вы используете его. Это обычно делает работу всей системы более эффективной.
Если приложение вызывает mexMakeMemoryPersistentуказанный участок памяти становится постоянным. Когда файл MEX завершается, средство управления памятью не освобождает постоянные участки памяти. Поэтому единственный способ освободить постоянный участок памяти - это позвонить mxFree. Как правило, вызов файлов MEX mexAtExit для регистрации обработчика очистки. Вызовы обработчика очистки mxFree.
Не использовать mxFree для mxArray создается любыми другими функциями в API библиотеки матриц. Использовать mxDestroyArray вместо этого.
См. эти примеры в разделе :matlabroot/extern/examples/mx
См. эти примеры в разделе :matlabroot/extern/examples/refbook
См. эти примеры в разделе :matlabroot/extern/examples/mex
mexAtExit, mexMakeArrayPersistent, mexMakeMemoryPersistent, mxCalloc, mxDestroyArray, mxMalloc, mxRealloc, mxArrayToString, mxArrayToUTF8String