主要内容

mxCalloc (C和Fortran)

为数组分配动态内存,初始化为0,使用MATLAB内存管理器

C语法

#include " matrixh " #include  void mxCalloc(mwSize n, mwSize size);

Fortran语言的语法

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

参数

n

要分配的元素数量。这一定是非负数。

大小

每个元素的字节数。(C.运算符运算符计算每个元素的字节数。)

返回

如果成功,则指向已分配的动态内存的开始位置。如果在MAT或引擎独立应用程序中失败,mxCalloc返回在C (0在Fortran)。如果在MEX文件中不成功,MEX文件终止并控制返回MATLAB®提示。

mxCalloc在空闲堆空间不足时不成功。

描述

mxCalloc分配足够容纳的连续堆空间n的元素大小并初始化这个新分配的内存0.在MATLAB应用程序中分配内存,使用mxCalloc而不是ANSI®Ccalloc函数。

在MEX文件中,而不是MAT或引擎应用程序中,mxCalloc将分配的内存注册到MATLAB内存管理器中。当控制返回到MATLAB提示符时,内存管理器然后自动释放或重新分配,这记忆。

如何管理由这个函数创建的内存取决于分配给它的数据的用途。如果你把它赋值给plhs []使用函数,例如mxSetDoubles,则MATLAB负责释放内存。

如果您在内部使用数据,那么MATLAB内存管理器将维护一个由函数分配的所有内存的列表,并在控制返回到MATLAB提示符时自动释放(释放)内存。一般来说,我们建议MEX文件函数销毁它们自己的临时数组并释放它们自己动态分配的内存。在源MEX文件中执行这种清理要比依赖自动机制更有效。因此,当您使用完这个函数分配的内存后,调用mxFree释放内存。

如果没有将该数据分配给输出参数,并且希望它在MEX文件完成后保持不变,那么调用mexMakeMemoryPersistent调用此函数后。如果使用持久内存编写MEX文件,请确保注册一个mexAtExit函数在MEX文件被清除时释放已分配的内存。

例子

参见matlabroot走读生/ /墨西哥人例子

参见matlabroot走读生/ / refbook例子

参见matlabroot走读生/ / mx例子

之前介绍过的R2006a