gpt4 book ai didi

c++ - 内存:编译器如何选择存储变量的位置?

转载 作者:太空狗 更新时间:2023-10-29 19:48:19 25 4
gpt4 key购买 nike

<分区>

给定两个函数,func1 和 f2,具有以下签名:

void func1(){
int baba = 12345;
// printf the value of baba here
}

void f2(){
int loo;
//printf the value of loo here
}

...如果我运行我的 int main,它只有 func1 然后是 f2:

int main(){
func1();
f2();
}

...那么 baba 和 loo 的打印值都是 12345。所以我的问题如下:

  1. 这是定义的行为,还是我的机器出现的错误?

  2. 如果这不是我的电脑做的一些错误,你能解释为什么编译器选择将 loo 存储在与 baba 相同的地址吗?>/p>

编辑:我想我应该问,如果我有这两个完全相同的函数,baba 和 loo 在任何机器上都具有相同的值吗?

我知道 loo 的值是 baba 剩余位的结果,而且我知道(至少在我的机器上)两者的堆栈正在布局,使得 loo 重叠到 baba 的旧领土上。 真的每台机器都会以 baba 和 loo 重叠的方式布置这两个函数堆栈吗?完全按照写的方式使用这两个函数,即...

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