这是那些烦人的问题之一,但我只是为了了解而想知道。
声明局部函数变量时,声明的顺序对于这些变量相对于彼此在内存中的存在位置是否有任何影响?可以根据 a 和 b 的声明顺序来确定它们的相对内存位置(如下)吗?
我读到,顺序确实有所不同,因为稍后声明的变量(如下面的 b)将具有比之前声明的变量(如下面的 a)更低的内存地址。然而,根据我的实验,我得到了不同的结果。
这是完全随机的还是可以根据声明顺序确定相对内存位置(即“&a 始终是比 &b 更低的内存地址”)?
例如:
int func()
{
int a = 0;
char b = 'C';
b = 'D';
return ++a;
}
最佳答案
简而言之,这完全取决于编译器。它还取决于目标平台、优化选项等。
此外,变量甚至可能没有地址(因为它已经被优化掉,存在于寄存器等中)。
在您的具体示例中,我的编译器不会为 a
或 b
分配任何存储空间,因此无法说明它们的相对地址。
关于c++ - 局部变量的相对内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25231606/