在我的解决方案中,我有一些启用 clr 的 c++ 项目(dll),因为它们使用 ac#(.NET)dll。
当在非 clr 项目(dll)与启用 clr 的项目(dll)之间引发异常并通过引用捕获它时,我检测到内存泄漏。当我省略了 c# dll 中的使用,并将项目更改为非 clr 时,泄漏就消失了。
或者,如果我将抛出新异常并在 catch 语句中删除它 - 泄漏就消失了。Exception 类是从 std::exception 继承的,还有一些用于一般描述、函数名等的字符串。
有人可以解释泄漏,或者我怎样才能避免泄漏?