【发布时间】:2013-07-22 04:13:19
【问题描述】:
在我的解决方案中,我有一些启用了 clr 的 c++ 项目 (dll),因为它们使用的是 c# (.NET) dll。
当在非 clr 项目 (dll) 与启用 clr 的项目 (dll) 之间引发异常并通过引用捕获它时,我检测到内存泄漏。当我省略了 c# dll 中的使用,并将项目更改为非 clr 时,泄漏就消失了。
或者,如果我将抛出 new Exception 并在 catch 语句中将其删除 - 泄漏就消失了。 Exception 类是从 std::exception 继承的,还有一些用于一般描述、函数名等的字符串。
有人可以解释泄漏,或者我怎样才能避免泄漏?
【问题讨论】:
-
好吧,当你“扔新T;”你新的东西,所以有人必须删除它。只抛出一个没有 new 的实例有什么问题?
-
泄漏是当我尝试抛出实例(没有 new )并通过引用捕获它时
-
请正确标记您的问题;不应该有
clr和net标签之类的吗? -
谢谢,我的第一个问题...
标签: c++ memory-management interop clr