在我的解决方案中,我有一些c ++项目(dll),它们使用c#(.NET)dll时启用了clr。
当非clr项目(dll)与启用了clr的项目之间抛出异常并通过引用捕获时,我检测到内存泄漏。当我在c#dll中省略了使用,并将项目更改为非clr时,泄漏就消失了。
或者,如果我将抛出 new Exception 并在catch语句中删除它 - 泄漏就消失了。 Exception类继承自std :: exception,还有一些字符串用于一般描述,函数名称等等。
可以用sombody解释泄漏,或者我该如何避免泄漏?
答案 0 :(得分:3)
如果要跨模块边界传递错误信息,请通过错误代码或通过处理此问题的机制(例如SEH例外或COM异常)传递错误信息
好的,这里有一些澄清: