mxFree (C и Фортран)

Свободная динамическая память выделяется 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

Была ли эта тема полезной?