P/调用C 功能后清理内存

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

本文关键字:内存 功能 调用      更新时间:2023-10-16

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

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

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

FreeLibrary(hLib);

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

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

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

这不是您可以从外部做的事情。图书馆必须提供启用此设施的设施。该库的设计不佳,并且不可避免地泄漏,或者您未能调用其提供的清理功能。

无论哪种方式,都没有可以解决此问题的魔法销售功能。通过研究图书馆及其文档,可以找到前进的方向。您可能需要与其开发人员取得联系。