gpt4 book ai didi

c# - 将代码从 C++ 包装到 C# 时的内存管理

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:14 25 4
gpt4 key购买 nike

我正在尝试将我的 C++ 代码封装到 C# 中。我设法将函数导出到 DLL,然后从 C# 导入它们。

我的问题如下:

在我的 C++ 代码中,我有一个使用“createInstance”函数创建的单例。在我导出到 DLL 的新 newCreateInstance 函数中,我只是调用旧的 createInstance,然后返回一个指向我创建的单例实例的空指针。

在其他函数中,我尝试对单例实例进行操作。所以,我得到一个 void 指针,然后我将其转换为相关指针,然后尝试对其进行操作。

但我认为当我从 C# 调用第二个函数(在调用第一个函数之后)时,我的单例实例已经从内存中删除。我如何将实例保留在我的堆/堆栈上?甚至有可能还是我应该采取不同的方式?

p.s - 我无法在 C# 上创建相同的类,因为我不知道它的实现(它也来自 DLL/LIB 文件)。所以我必须使用空指针。

谢谢!!!

最佳答案

如果您关于过早垃圾收集的假设是正确的,您需要使用 GC.KeepAlive 作为 explained on MSDN :

msdn

关于c# - 将代码从 C++ 包装到 C# 时的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com