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

Clean up memory after P/Invoke a C++ function

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

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

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

FreeLibrary(hLib);

C++ 中使用的一个库正在存储内存,但从不释放它。这是因为库是一个模拟模型,它的过程通常在运行.

后终止。

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

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

这不是你可以从外面做的事情。图书馆必须提供设施来实现这一点。要么库设计不当,不可避免地会泄漏,要么你没有调用它提供的清理函数。

不管怎样,没有神奇的pinvoke函数可以解决这个问题。通过研究图书馆及其文档可以找到前进的方向。您可能需要联系其开发人员。