元帅.FreeHGlobal可以释放无人阵列

本文关键字:无人 阵列 释放 FreeHGlobal 元帅 | 更新日期: 2023-09-27 18:15:44

我使用:

IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(array[0]) * array.Length);

然后使用:

释放它
Marshal.FreeHGlobal(ptr );

据我所知,这将正确释放内存,不会发生内存泄漏。我的问题是:这是真的吗?如果是,它是如何工作的?Marshal状态是否满并存储关于每个保留数据的元数据?

元帅.FreeHGlobal可以释放无人阵列

AllocHGlobal方法公开了LocalAlloc函数。FreeHGlobal方法暴露了LocalFree函数。内存管理不是由任何托管组件完成的。它是由这些windows api函数后面的代码完成的。

回答你的问题:是的,它必须跟踪分配的大小。你可以通过调用LocalSize函数来获取句柄的大小。老实说,我不知道它的内部是怎么做的,但你不需要知道。