【发布时间】:2013-11-30 11:20:21
【问题描述】:
我正在尝试将我的 C++ 代码包装到 C# 中。 我设法将我的函数导出到 DLL,然后从 C# 导入它们。
我的问题如下:
在我的 C++ 代码中,我有一个使用“createInstance”函数创建的单例。在我导出到 DLL 的新 newCreateInstance 函数中,我只调用旧的 createInstance,然后返回一个指向我创建的单例实例的 void 指针。
在其他功能中,我尝试对单音实例进行操作。所以,我得到一个 void 指针,然后我将它转换为相关的指针,然后尝试对其进行操作。
但我认为,当我从 C# 调用第二个函数(在调用第一个函数之后)时,我的单音实例已经从内存中删除了。我如何将实例保留在我的堆/堆栈上?甚至有可能还是我应该做不同的事情?
p.s - 我无法在 C# 上创建相同的类,因为我不知道它的实现(它也来自 DLL/LIB 文件)。所以我必须使用 void 指针。
谢谢!!!
【问题讨论】:
-
贴一些你在说什么的代码,这样我们就可以判断它是否会内存不足
标签: c# c++ memory-management void-pointers word-wrap