无法分配静态双指针变量

时间:2019-09-08 22:05:35

标签: c# .net visual-studio pointers double-pointer

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

使用.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);
}

example 调试-64x

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

1 个答案:

答案 0 :(得分:2)

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

问题可以通过您提供的代码复制: enter image description here

在设置中关闭pointers时,我可以看到地址Use Managed Compatibility Modeenter image description here