gpt4 book ai didi

c# - 为什么 stackalloc 接受可变长度?

转载 作者:太空狗 更新时间:2023-10-29 23:05:57 26 4
gpt4 key购买 nike

知道为什么“stackalloc”关键字接受可变长度吗?

如果这条指令返回一个指向分配在堆栈帧中的缓冲区的指针,编译器如何管理它?每次调用它来组织堆栈框架时,它都会在运行时重新编译该函数?

谢谢。

最佳答案

Any idea why the stackalloc keyword accepts a variable length?

因为这样做很有用且值得期待,因此语言设计者选择允许这样做。

If this instruction returns a pointer to a buffer allocated in the stack's frame, how the compiler manage that? It recompiles the function at runtime every time it's called to organize the stack frame?

localalloc指令在堆栈当前帧之后 分配内存,分配只是将地址存储回本地。因此:没有必要重新计算任何东西,除了更新堆栈框架的末尾,这样如果我们调用另一个方法它就不会被覆盖。

(注意:和往常一样,在讨论堆栈时,这实际上是一个实现细节;JIT 在理论上可以自由地从它想要的任何地方分配它,只要它尊重语义)

关于c# - 为什么 stackalloc 接受可变长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37231575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com