元帅.FreeHGlobal可以释放无人阵列
本文关键字:无人 阵列 释放 FreeHGlobal 元帅 | 更新日期: 2023-09-27 18:15:44
我使用:
IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(array[0]) * array.Length);
然后使用:
释放它Marshal.FreeHGlobal(ptr );
据我所知,这将正确释放内存,不会发生内存泄漏。我的问题是:这是真的吗?如果是,它是如何工作的?Marshal状态是否满并存储关于每个保留数据的元数据?
AllocHGlobal
方法公开了LocalAlloc
函数。FreeHGlobal
方法暴露了LocalFree
函数。内存管理不是由任何托管组件完成的。它是由这些windows api函数后面的代码完成的。
回答你的问题:是的,它必须跟踪分配的大小。你可以通过调用LocalSize
函数来获取句柄的大小。老实说,我不知道它的内部是怎么做的,但你不需要知道。