知道为什么'stackalloc‘关键字接受可变长度吗?
如果此指令返回指向堆栈帧中分配的缓冲区的指针,编译器如何管理该指针?每次调用它来组织堆栈框架时,它都会在运行时重新编译函数吗?
谢谢。
发布于 2016-05-14 21:06:40
知道为什么
stackalloc关键字接受可变长度吗?
因为能够这样做是有用和可取的,因此语言设计人员选择了允许它。
如果此指令返回指向堆栈帧中分配的缓冲区的指针,编译器如何管理该指针?每次调用它来组织堆栈框架时,它都会在运行时重新编译函数吗?
localalloc指令在堆栈当前帧之后分配内存,而分配只将地址存储回本地。因此:除了更新堆栈框架的末尾,这样如果我们调用另一个方法,它就不会被覆盖,所以没有必要重新计算任何东西。
(注:与往常一样,在讨论堆栈时,这实际上是一个实现细节;理论上,只要JIT尊重语义,JIT就可以自由地从任何地方分配它)
https://stackoverflow.com/questions/37231575
复制相似问题