我一直在尝试弄清楚什么时候会在堆栈上分配内存,但我无法想象如何使数组(或其中的值)在堆栈上分配内存;
以这个例子为例:
public void foo()
{
int bar[] = new int [10];
}
在堆上分配10个int结构体,只有指向它们的指针才会在栈上,是吗?
如何使固定大小的数组放在栈上?如果我正在使用我定义的结构体怎么办?
如果我想要将数组大小作为参数传递给函数呢?
据我所知,当函数被调用时,只要在调用时已知大小,就应该没有问题可以在栈上获取任意大小的数组。
是否应该为此而烦恼?据我所知,将此固定大小数组放在栈上会提高性能,因为不会进行堆分配。
stackalloc
可用于强制堆栈分配一定数量的字节。它有其用途,但您应该非常确定您需要它 - 大多数程序(特别是业务应用程序)不需要它。 - xxbbcc