exponenta event banner

mxMalloc (C и 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 или модуля mxMalloc прибыль NULL в C (0 в Фортране). Если файл MEX не выполнен, то файл MEX завершается, и элемент управления возвращается в подсказку MATLAB ®.

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

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

Описание

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

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

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

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

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

Примеры

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

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

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