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

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

Возвращается

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

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

Описание

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

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

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

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

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

Примеры

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

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

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

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