mxCalloc (C and Fortran)

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

Синтаксис C

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

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

#include "fintrf.h"
mwPointer mxCalloc(n, size)
mwSize n, size

Аргументы

n

Количество выделяемых элементов. Это должно быть неотрицательное число.

size

Количество байтов на элемент. (The C sizeof оператор вычисляет количество байтов на элемент.)

Возвраты

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

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

Описание

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

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

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

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

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

Примеры

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

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

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

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