MSDN很少涉及的问题,想求教一下。
Marshal.FreeHGlobal的意思?
还有下面这段代码,是用于什么的?
internal static IntPtr ConvertRectangleToMemory(RectangleF[] rect){ if (rect == null) { throw new ArgumentNullException("rect"); } GPRECTF gPRECTF = default(GPRECTF); int j = Marshal.SizeOf(gPRECTF.GetType()); int k = rect.Length; IntPtr intPtr = Marshal.AllocHGlobal(k * j); for (int i = 0; i < k; i++) { Marshal.StructureToPtr(new GPRECTF(rect[i]), (IntPtr)((long)intPtr + i * j), false); } return intPtr;}HGLOBAL WINAPI GlobalAlloc( __in UINT uFlags, __in SIZE_T dwBytes);
[解决办法]
这段代码在全局堆上分配内存之后把需要列集的数据复制到可供非托管函数访问的固定内存
别的列集方法还有COM、pinvoke、C++interop等等
[解决办法]