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) условия.

Чтобы освободить пространство "кучи" в приложениях 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:

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