无法分配静态双指针变量

Can't assign Static Double Pointer variable

我似乎无法分配静态双指针变量。我做错了什么吗?

使用 .Net 4.7.2

static unsafe float** pointers = (float**)Marshal.AllocHGlobal(sizeof(float) * 32);

static unsafe void Main(string[] args)
{
       var i = pointers == default; // false but displays 0x0000000000000000

       // stil the same
       pointers = (float**)Marshal.AllocHGlobal(sizeof(float) * 32);

       // works - 0x00000213094bc7c0
       float** test = (float**)Marshal.AllocHGlobal(sizeof(float) * 32);
}

调试 - 64x

这是正确的行为还是发生在其他人身上?

看起来纯粹是调试器问题:在这两种情况下都分配了内存,您可以将 pointers 转换为 IntPtr 而它不是 0。

问题可通过您提供的代码重现:

在设置中关闭 Use Managed Compatibility Mode 时,我能够看到 pointers 的地址: