从Matlab调用c++类(具有内存持久性)
Calling a C++ class from Matlab (with memory persistance)
我如何从matlab调用c++类(.cpp和.h文件),使其在内存中保持持久性,直到使用完成,然后我释放它?
的例子:一个可以无限期保持的matlab GUI。在启动时,分配c++类。只要GUI在运行(即使在空闲模式下),类就保持持久化,并等待GUI调用它的方法。当用户关闭GUI时,类被释放。
谢谢。
有一个如何在MATLAB中央文件交换中做到这一点的示例。它是由一些MathWorks开发人员贡献的,并展示了如何通过mex接口在MATLAB类中包装c++类,安全,没有内存泄漏,同时在MATLAB中实现类似于底层c++接口的接口。
我认为您想要的是创建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包装器,但我不知道还有什么更优雅的解决方案。
参见:http://au.mathworks.com/matlabcentral/answers/783-i-have-a-c-class-how-can-i-interface-to-it-through-a-matlab-class
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 类型总是使用其大小存储在内存中吗
- 在一个块中声明的对象的C++持久性,内存泄漏的可能性
- 从Matlab调用c++类(具有内存持久性)