使用可实现动态内存马铃薯内存管理器
#include“matrix.h”#includevoid * mxrealloc(void * ptr,mwsize大小);
#include“fintrf.h”mwpointer mxrealloc(ptr,size)mwpointer ptr mwsize大小
PTR.
指向由分配的内存块的指针mxcalloc.
那mxmalloc.
或者mxrealloc
。
尺寸
新大小的分配内存,以字节为单位。
指向重新分配的内存块的开始,如果成功。如果在垫子或发动机独立应用中不成功,那么mxrealloc
回报零
在c(0.
在Fortran中)并使原始内存块保持不变。(使用mxfree.
释放原始内存块)。如果在MEX文件中不成功,则MEX文件终止并控制返回MATLAB®迅速的。
mxrealloc
当没有足够的自由堆空间时是不成功的。
mxrealloc
更改已分配的内存块的大小mxcalloc.
那mxmalloc.
或者mxrealloc
。要在MATLAB应用程序中分配内存,请使用mxrealloc
而不是这一点ANSI.®C.realloc.
功能。
mxrealloc
更改指向的内存块的大小PTR.
到尺寸
字节。重新分配的内存的内容不变,直到新内存和旧内存中较小的大小为止。重新分配的内存可能位于与原始内存不同的位置,因此返回的指针可能不同于PTR.
。如果内存位置会改变,那么mxrealloc
释放指向的原始内存块PTR.
。
如果尺寸
大于0.
和PTR.
是零
在c(0.
在Fortran),然后mxrealloc
表现得像mxmalloc.
。mxrealloc
分配一个新的内存块尺寸
字节并返回指向新块的指针。
如果尺寸
是0.
和PTR.
不是零
在c(0.
在Fortran),然后mxrealloc
释放指向的内存PTR.
并退货零
在c(0.
在Fortran)。
在MEX文件中,但不是垫或引擎应用程序,mxrealloc
使用MATLAB内存管理器注册分配的内存。当控件返回MATLAB提示时,内存管理器然后自动释放,或释放,这个记忆。
如何管理由此函数创建的内存取决于分配给它的数据的目的。如果将其分配给输出参数PLHS []
使用诸如mxSetDoubles
,然后Matlab负责释放内存。
如果在内部使用数据,则Matlab Memory Manager将维护由函数分配的所有内存的列表,并在控制返回到MATLAB提示时自动释放(删除)内存。通常,我们建议MEX文件功能破坏自己的临时数组并释放自己的动态分配内存。在源MEX文件中执行此清除更有效,而不是依赖于自动机制。因此,当您使用此函数分配的内存完成时,请致电mxfree.
解除内存。
如果您未将此数据分配给输出参数,并且在MEX文件完成后,您希望它持续存在,则致电mexmakememorypersistent
调用此功能后。如果您使用持久内存编写MEX文件,请务必注册一个Mexatexit.
在清除MEX文件的情况下,函数在emx文件中删除分配内存。
Mexatexit.
那mexMakeArrayPersistent
那mexmakememorypersistent
那mxcalloc.
那mxdestroyarray
那mxfree.
那mxmalloc.