exponenta event banner

mxCalloc (C и 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 оператор вычисляет количество байтов на элемент.)

Прибыль

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

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

Описание

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

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

Управление памятью, созданной этой функцией, зависит от назначения присвоенных ей данных. Если он назначен аргументу вывода в 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