【发布时间】:2012-04-10 17:59:09
【问题描述】:
我即将编写一个 Mex 文件,所以我可以在 MATLAB 中使用我的 c++ 代码。
这段代码是围绕一个单例类构建的(在 c++ 中)。
我已经读过,要使内存持久,我必须使用 MxAlloc 而不是 malloc/new,这对我使用的所有内存都是如此吗?即,我拥有的类使用向量,并且向量使用标准机制自动分配新内存。
那么使用 MxAlloc 分配的类中的向量是否会难以保持其内存?
【问题讨论】:
-
好问题 - 文档中没有很好地解释这个问题。我听说有人不必要地重写整个库,认为他们需要更改每个内存调用以使其与 MEX 兼容。
-
谢谢!重写正是我想要避免的,因为该库仍在开发中,这将导致我拥有该库的 2 个实例,一个用于 c/c++ 工作,一个用于 MATLAB 原型设计。
-
但请记住,还有一些我不完全确定的细节。例如,如果 Mex 文件被中断(例如通过错误),通过标准 C 方法分配的内存可能没有被正确地释放...如果知道的人在这一点上提供进一步的输入,将不胜感激!