我的应用程序是一个C#程序,它在P / Invoke上使用C ++函数。 在调用C ++函数之前,库已加载:
IntPtr hLib = LoadLibrary("CPPFunctions.DLL");
并且在C ++函数返回之后,通过回调到我的C#应用程序,结果库得到了清理:
FreeLibrary(hLib);
在C ++中使用的库是存储内存,但从不发布它。这是因为库是一个模拟模型,其过程通常在运行后终止。
这意味着如果重复调用该函数,我将需要越来越多的内存。
有没有办法完全释放C ++分配的内存?
答案 0 :(得分:3)
这不是你可以从外面做的事情。图书馆必须提供设施来实现这一目标。这个库设计糟糕,不可避免地泄漏,或者你没有调用它提供的清理功能。
无论哪种方式,都没有神奇的pinvoke功能可以解决这个问题。通过研究图书馆及其文档,可以找到前进的方向。您可能需要与其开发人员联系。