【问题标题】:c++/MATLAB Mex bindingc++/MATLAB Mex 绑定
【发布时间】:2012-04-10 17:59:09
【问题描述】:

我即将编写一个 Mex 文件,所以我可以在 MATLAB 中使用我的 c++ 代码。

这段代码是围绕一个单例类构建的(在 c++ 中)。

我已经读过,要使内存持久,我必须使用 MxAlloc 而不是 malloc/new,这对我使用的所有内存都是如此吗?即,我拥有的类使用向量,并且向量使用标准机制自动分配新内存。

那么使用 MxAlloc 分配的类中的向量是否会难以保持其内存?

【问题讨论】:

  • 好问题 - 文档中没有很好地解释这个问题。我听说有人不必要地重写整个库,认为他们需要更改每个内存调用以使其与 MEX 兼容。
  • 谢谢!重写正是我想要避免的,因为该库仍在开发中,这将导致我拥有该库的 2 个实例,一个用于 c/c++ 工作,一个用于 MATLAB 原型设计。
  • 但请记住,还有一些我不完全确定的细节。例如,如果 Mex 文件被中断(例如通过错误),通过标准 C 方法分配的内存可能没有被正确地释放...如果知道的人在这一点上提供进一步的输入,将不胜感激!

标签: c++ matlab mex


【解决方案1】:

您仅将 MxAlloc 用于要返回到 Matlab 的数据。保留在您的库中的所有内容都可以正常分配。

您可能需要注意的一个问题是您的库可以随时卸载。通常,当用户调用您的 mexFunction 时,该库已加载,并将保持加载状态以供后续调用。但是,在任何时候 Matlab 都可能卸载您的库,因此您的 mexFunction 中的所有资源都将被释放。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-07-24
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多