mxFree (C and Fortran)

Свободная динамическая память, выделенная mxCalloc, mxMalloc, mxRealloc, mxArrayToString или mxArrayToUTF8String функциями

Синтаксис C

#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:

Представлено до R2006a