-1

假设我有这个代码:

IntPtr native_color = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gdk.RGBA)));

native_color 的内存是否全部初始化为零?您会认为是的,但是在某些情况下,我发现情况并非如此……那么, Marshal.AllocHGlobal() 不是确定性的吗?

4

1 回答 1

2

从文档Marshal.AllocHGlobal Method (Int32)

当 AllocHGlobal 调用 LocalAlloc 时,它会传递一个 LMEM_FIXED 标志,这会导致分配的内存被锁定到位。此外,分配的内存不是零填充的

如果您已经看到 Marshal.AllocHGlobal 返回的内存被零填充,那可能是因为它们已经在那里了。

于 2013-08-09T20:39:41.617 回答