如何从matlab调用C ++类(.cpp和.h文件),使其在内存中保持持久性,直到完成它的使用,然后才释放它?
实施例: 一个可以无限期保持的matlab GUI。在启动时,分配C ++类。只要GUI正在运行(即使在空闲模式下),该类仍然是持久的,并等待GUI调用其方法。当用户关闭GUI时,将释放该类。
感谢。
答案 0 :(得分:2)
如何在MATLAB中央文件交换中执行此操作example。它由一些MathWorks开发人员做出贡献,并展示了如何通过mex接口安全地在MATLAB类中包装C ++类,而没有内存泄漏,同时在MATLAB中实现类似于底层C ++接口的接口。 / p>
答案 1 :(得分:1)
我认为你想要的是创建一个Init
和Exit
函数,为该类分配和释放内存。当你的GUI启动时Init
应该被调用,当你完成时Exit
应该被调用。你可以按照以下方式实现它(未经测试,不知道这种方法的安全性如何,也不要无序地调用Init / Exit):
class MyClass
{
public:
MyClass(int a) : m_A(a) {}
private:
int m_A;
};
MyClass* instance;
void Wrapper_Init(void)
{
instance = new MyClass(5);
}
void Wrapper_Exit(void)
{
delete instance;
}
然后,您可以编写其他函数来访问/操作MyClass
的实例。这有点像为一个不错的C ++类创建一个丑陋的C包装器,但我不知道更优雅的解决方案。