在P / Invoke C ++函数之后清理内存

时间:2017-09-12 16:16:48

标签: c# c++ pinvoke ipc

我的应用程序是一个C#程序,它在P / Invoke上使用C ++函数。 在调用C ++函数之前,库已加载:

IntPtr hLib = LoadLibrary("CPPFunctions.DLL");

并且在C ++函数返回之后,通过回调到我的C#应用​​程序,结果库得到了清理:

FreeLibrary(hLib);

在C ++中使用的库是存储内存,但从不发布它。这是因为库是一个模拟模型,其过程通常在运行后终止。

这意味着如果重复调用该函数,我将需要越来越多的内存。

有没有办法完全释放C ++分配的内存?

1 个答案:

答案 0 :(得分:3)

这不是你可以从外面做的事情。图书馆必须提供设施来实现这一目标。这个库设计糟糕,不可避免地泄漏,或者你没有调用它提供的清理功能。

无论哪种方式,都没有神奇的pinvoke功能可以解决这个问题。通过研究图书馆及其文档,可以找到前进的方向。您可能需要与其开发人员联系。