为数组分配动态内存,初始化为0,使用MATLAB内存管理器
#include " matrixh " #includevoid mxCalloc(mwSize n, mwSize size);
#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例子
mexAtExit
,mexMakeArrayPersistent
,mexMakeMemoryPersistent
,mxDestroyArray
,mxFree
,mxMalloc
,mxRealloc