C# Stackalloc指针指向C中的指针#

C# Stackalloc指针指向C中的指针#,c#,memory,libsvm,C#,Memory,Libsvm,我在c#中有这样一个结构: 我编写了下面的代码,将非托管内存分配给变量p svm_node** p = stackalloc svm_node*[100]; 但在执行代码后,变量p为null,但如果我使用此代码: svm_node* p = stackalloc svm_node[100]; p将是一个真正的指针。 问题出在哪里?无法重现。对我来说很好。对我来说也很好:svm_节点**p=stackalloc svm_节点*[100]*p=(svm_节点*)(新IntPtr(42));Wri

我在c#中有这样一个结构:

我编写了下面的代码,将非托管内存分配给变量p

svm_node** p = stackalloc svm_node*[100];
但在执行代码后,变量p为null,但如果我使用此代码:

svm_node* p = stackalloc svm_node[100];
p将是一个真正的指针。
问题出在哪里?

无法重现。对我来说很好。对我来说也很好:
svm_节点**p=stackalloc svm_节点*[100]*p=(svm_节点*)(新IntPtr(42));WriteLine(“{0},{1}”,(IntPtr)p,(IntPtr)(*p))
stackalloc从不返回null,保证返回。最简单的解释是,您发现解引用的指针都是空的。根据设计,stackalloc zero会初始化分配的内存。或者换句话说,您只分配了指针,根本没有结构。这不太实际。多亏了大家,我还有一个问题,那就是我能在函数中分配一个内存,并且当我从那个函数返回时不会丢失它吗?stackalloc内存将在从函数返回后由释放。
svm_node* p = stackalloc svm_node[100];