【发布时间】:2014-07-09 19:23:19
【问题描述】:
我的 .NET 应用程序可以通过 .NET 程序集访问 c++ API。 假设我没有在 Dispose 方法中正确释放非托管资源/对象。
内存只是在application.exe中增加还是内存泄漏也可以在application.exe之外,所以我可以确定当应用程序退出时我会恢复所有内存?
【问题讨论】:
-
你能给我们看一些代码吗?你真的有内存泄漏吗? C++ API 是标准 C++ 还是托管 C++?
-
如果它是托管 C++ 那么它不应该泄漏,手指交叉。 AppDomain 最终会清理所有内容,但在清理之前内存利用率仍然很高。
-
如果您使用托管 C++ 调用非托管(本机)C++ 代码,如果本机代码希望您清理内存,则会导致内存泄漏。
-
@MauriceReeves 托管 C++ 可以是混合模式程序集,这意味着它可以使用
new和gcnew。前者不由 GC 处理。 -
@LucasTrzesniewski 这是真的。没有考虑到。我认为OP需要发布一些代码。这里有太多变数。