我想知道常量变量存储在哪里。它是存储在与全局变量相同的内存区域吗?还是在栈上?
我想知道常量变量存储在哪里。它是存储在与全局变量相同的内存区域吗?还是在栈上?
我在x86_64 GNU/Linux系统上进行了检查。通过取消引用指向“const”变量的指针,可以更改该值。我使用了objdump。在文本段中没有找到“const”变量。“const”变量存储在堆栈上。 “const”是“C”中的编译器指令。当编译器遇到更改“const”变量的语句时,会抛出错误。
有些常量甚至不会被存储。
考虑以下代码:
int x = foo();
x *= 2;
编译器很可能会将乘法转换为x = x + x;
,因为这样可以减少从内存加载数字2的需求。