mxMalloc (C and Fortran)

Выделите неинициализированную динамическую память с помощью диспетчера памяти MATLAB

Синтаксис C

#include "matrix.h"
#include <stdlib.h>
void *mxMalloc(mwSize n);

Синтаксис языка ФОРТРАН

#include "fintrf.h"
mwPointer mxMalloc(n)
mwSize n

Аргументы

n

Количество байтов, выделяемых для n больше 0

Возвраты

Указатель на запуск выделенной динамической памяти, если это успешно. Если это неудачно в автономном приложении MAT или engine, то mxMalloc возвращает NULL в C (0 на Фортране). Если это не удалось в файле MEX, то файл MEX завершается и управление возвращается в MATLAB® приглашение.

mxMalloc неудачно, когда недостаточно свободного пространства в куче.

Если вы звоните mxMalloc на C со значением n = 0, затем MATLAB возвращается либо NULL или допустимый указатель.

Описание

mxMalloc выделяет смежное пространство кучки, достаточное для удержания n байты. Чтобы выделить память в приложениях MATLAB, используйте mxMalloc вместо ANSI® C malloc функция.

В файлах MEX, но не в приложениях MAT или engine, mxMalloc регистрирует выделенную память в диспетчере памяти MATLAB. Когда управление возвращается к подсказке MATLAB, менеджер памяти затем автоматически освобождает, или deallocates, эту память.

То, как вы управляете памятью, созданной этой функцией, зависит от назначения данных, назначенных ей. Если вы присваиваете его выходному аргументу в plhs[] использование функции, такой как mxSetDoubles, тогда за освобождение памяти отвечает MATLAB.

Если вы используете данные внутри себя, то диспетчер памяти MATLAB поддерживает список всей памяти, выделенной функцией, и автоматически освобождает (освобождает) память, когда управление возвращается в подсказку MATLAB. В целом мы рекомендуем Файлу MEX функции уничтожать собственные временные массивы и освобождать собственную динамически выделенную память. Более эффективно выполнить эту очистку в исходном файле MEX, чем полагаться на автоматический механизм. Поэтому, когда вы закончите использовать память, выделенную этой функцией, вызовите mxFree для удаления памяти.

Если вы не назначаете эти данные выходному аргументу и хотите, чтобы они сохранялись после завершения файла MEX, вызовите mexMakeMemoryPersistent после вызова этой функции. Если вы записываете файл MEX с постоянной памятью, то обязательно зарегистрируйте mexAtExit функция для освобождения выделенной памяти в случае удаления файла MEX.

Примеры

См. эти примеры в matlabroot/ extern/examples/mx:

См. эти примеры в matlabroot/ extern/examples/refbook:

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