【发布时间】:2015-08-10 17:39:01
【问题描述】:
我有一个从我的 .Net c# 代码调用的 dll 本机方法。每次调用该方法时,它都会占用 Windows 内存空间。有时我的代码由于内存不足而失败。如何释放 Windows 内存空间?
【问题讨论】:
标签: c# dll heap-memory
我有一个从我的 .Net c# 代码调用的 dll 本机方法。每次调用该方法时,它都会占用 Windows 内存空间。有时我的代码由于内存不足而失败。如何释放 Windows 内存空间?
【问题讨论】:
标签: c# dll heap-memory
本机方法应该允许您访问释放它分配的内存的方法,或者它应该告诉您它是如何分配的以及如何释放它。
一般来说,如果一个方法返回一个指针(或者一个string,或者一个句柄!它们都是指针),你应该首先问自己我将如何释放这个内存?如果你不要问自己这个问题,你可能正在产生内存泄漏。
然后您应该注意由库构建的包含字符串或指向其他对象的指针的可疑结构(“对象”),并确保 .NET 编组器能够在必要时释放内存。
一般来说,处理 pinvokes 的内存是很复杂的!这需要非常小心,即使编组器可能会对您隐藏某些内容。
见https://stackoverflow.com/a/18172997/613130和https://stackoverflow.com/a/29508809/613130
那么内存泄漏总是有可能是由错误的代码 dll 端引起的,那就别无他法了,除了纠正 dll 代码中的错误/联系写它的人 p>
【讨论】: