C# Marshal.AllocHGlobal()结果是否确定?

C# Marshal.AllocHGlobal()结果是否确定?,c#,interop,pinvoke,marshalling,C#,Interop,Pinvoke,Marshalling,假设我有以下代码: IntPtr native_color = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gdk.RGBA))); 本机颜色的内存是否全部初始化为零?你可能会认为是的,但在一些案例中,我发现事实并非如此。。。那么,Marshal.AllocHGlobal()是否不确定?来自文档 当AllocHGlobal调用LocalAlloc时,它传递一个LMEM_固定标志,该标志 使分配的内存锁定到位。此外,分配的 内存不是零填充的 如果您

假设我有以下代码:

IntPtr native_color = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gdk.RGBA)));
本机颜色的内存是否全部初始化为零?你可能会认为是的,但在一些案例中,我发现事实并非如此。。。那么,Marshal.AllocHGlobal()是否不确定?

来自文档

当AllocHGlobal调用LocalAlloc时,它传递一个LMEM_固定标志,该标志 使分配的内存锁定到位。此外,分配的 内存不是零填充的


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

+1您想让我阅读文档吗?你从哪里得到这些疯狂的想法?哦,对不起,当我登陆这个页面时,我感到困惑,我没有看到更多的解释,显然我必须选择正确的重载。。。谢谢