使用 mexGetVariable 时是否需要分配内存?
Do I need to Allocate Memory when using mexGetVariable?
我正在通过 mexGetVariable
从我的 MATLAB 工作区获取一个变量。据我了解,使用 mexGetVariable
.
时会制作变量的副本并返回其指针
我需要为此副本分配内存吗?
不,您不必手动分配任何内存。 mexGetVariable( ) 例程将在后台为您分配所有必要的内存。此 mxArray 变量和关联内存的状态是“临时的”,这意味着一旦 mex 例程 returns 控制调用者,所有 mex 例程中固有的自动垃圾收集将释放内存,除非您已采取措施使其持久化(比如将其分配给 plhs[ ] 变量之一)。话虽如此,当你完成它时,使用 mxDestroyArray( ) 手动释放它是一个很好的编程习惯。
如果您不打算更改 mex 例程中的变量,则使用 mexGetVariablePtr( ) 会更快,这样可以避免对数据进行深度复制。
我正在通过 mexGetVariable
从我的 MATLAB 工作区获取一个变量。据我了解,使用 mexGetVariable
.
我需要为此副本分配内存吗?
不,您不必手动分配任何内存。 mexGetVariable( ) 例程将在后台为您分配所有必要的内存。此 mxArray 变量和关联内存的状态是“临时的”,这意味着一旦 mex 例程 returns 控制调用者,所有 mex 例程中固有的自动垃圾收集将释放内存,除非您已采取措施使其持久化(比如将其分配给 plhs[ ] 变量之一)。话虽如此,当你完成它时,使用 mxDestroyArray( ) 手动释放它是一个很好的编程习惯。
如果您不打算更改 mex 例程中的变量,则使用 mexGetVariablePtr( ) 会更快,这样可以避免对数据进行深度复制。