我有一个dll Native方法从我的.Net c#代码调用。每次调用该方法时,它都占用Windows内存空间。在某个时间点,由于内存不足,我的代码失败了。如何释放Windows内存空间?
答案 0 :(得分:1)
本机方法应该允许您访问释放其分配的内存的方法,或者它应该告诉您如何分配它以及如何释放它。
一般来说,如果一个方法返回一个指针(或一个string
或一个句柄!它们都是指针),你应该先问自己我将如何释放这个记忆?如果你不问自己这个问题,你可能会产生内存泄漏。
然后你应该观察由库构建的包含字符串或指向其他对象的指针的可疑结构(“对象”),并确保.NET编组器能够在必要时释放内存。
一般来说,处理pinvokes的内存很复杂!它需要非常小心,即使因为编组人员可能会隐藏某些东西。
请参阅https://stackoverflow.com/a/18172997/613130和https://stackoverflow.com/a/29508809/613130
然后总是有可能内存泄漏是由错误的代码DLL引起的,没有什么可做的,除了纠正dll代码中的错误/联系谁写了