无法分配静态双指针变量
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
的地址:
我似乎无法分配静态双指针变量。我做错了什么吗?
使用 .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);
}
这是正确的行为还是发生在其他人身上?
看起来纯粹是调试器问题:在这两种情况下都分配了内存,您可以将 pointers
转换为 IntPtr
而它不是 0。
问题可通过您提供的代码重现:
在设置中关闭 Use Managed Compatibility Mode
时,我能够看到 pointers
的地址: