gpt4 book ai didi

c++ - 什么时候分配 block 作用域变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:00 25 4
gpt4 key购买 nike

如果我有一个c函数

int foo(int input)
{
int x = 5;
if( input == 0 ){
int y = 6;
} else {
int z = 7;
}
}

我知道当我们进入函数时,堆栈指针会被调整,这会为 int x 语句腾出空间。而且我知道 yz 只存在于它们各自 block 的范围内。但是,何时以及如何为它们分配空间?

最佳答案

这取决于编译器,只要空间至少持续变量的生命周期即可。

通常,函数中所有自动变量的空间在函数开始时在堆栈上分配,并在函数返回时释放。如果不需要地址,一些变量可能会放在寄存器中。您的变量可能根本不存在,因为它们从未被使用过。

更新:如评论中所述,C(但还不是 C++)允许动态调整大小的本地数组。显然,在知道大小之前无法为它们分配空间。

关于c++ - 什么时候分配 block 作用域变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19692001/

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