stackalloc分配的空间会初始化吗?
CsToD 2008-04-13 06:31:59 在书上和网上查到的资料都说不会初始化,但我用了各种方法,打印的结果仍然是初始值
int size=100000;(在不导致溢出时的前提下,size的值足够大)
foo(size);
foo(size);
foo(size);
void foo(int size)
{
int*ds=stackalloc int[size];
for(int i=0;i<size;i++)
if(ds[i]!=0)
Console.WriteLine(ds[i])//由于所有值都是默认值0,所以不会有任何显示
else
ds[i]=1; //更改值为1
}
此方法返回时,ds的生命期结束,但只是栈指针回退size*4,所以其内存中的值会保留之前写入的值(ds[i]=1)
由于size的值足够大,当我多次调用foo时,肯定会分配调用foo所分配的空间,那么既然stackalloc不会初始化,就应该有部分内容是之前写入的1
但是结果却全都是0
谁能解释一下?
我实在找不到stackalloc不进行初始化的任何证据