你好,我正在尝试弄清楚stackalloc
如何工作。从我的(有限的)知识来看,C/C++
中不能像这里一样在堆栈上动态分配内存:
C/C++
示例:
void Allocate(int length){
int vector[length]; //wont work
}
接下来介绍如何使用C#
中的stackalloc
实现该功能:
void Allocate(int length){
int []vector=stackalloc int [length];
}
分配到 stack
(栈) 的整个意义不就是要在编译时或预编译时(使用 macros
等)知道数组的大小吗?C# 是如何处理这种“魔法”的?栈帧将如何被创建?
alloca
函数实现。 - Fantastic Mr Foxalloca
。 - HasturkunC++
标准的一部分。这种行为可能是由于非标准编译器扩展引起的,因此不具备可移植性。 - Fantastic Mr Fox