我保留了一个 无人 </跨度> 数组使用:
IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(array [0])* array.Length);
然后释放它:
Marshal.FreeHGlobal(ptr);
据我所知,这将……
该 AllocHGlobal 方法暴露了 LocalAlloc 功能。而且 FreeHGlobal 方法暴露了 LocalFree 功能。内存管理不是由任何托管组件完成的。它由这些windows api函数背后的代码完成。
AllocHGlobal
LocalAlloc
FreeHGlobal
LocalFree
回答你的问题:是的,它必须跟踪分配的大小。您可以通过调用来检索句柄的大小 LocalSize 功能。说实话,我不知道它是如何在内部完成的,但你不需要知道这一点。
LocalSize