主要内容

MxRealloc(C和Fortran)

使用可实现动态内存马铃薯内存管理器

C语法

#include“matrix.h”#include  void * mxrealloc(void * ptr,mwsize大小);

Fortran语法

#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文件中删除分配内存。

例子

看到这些例子matlabroot/ extern / simem / mx

在R2006A之前介绍