在我编译代码之后
#include <iostream>
int* func(int a) { return &a; }
int main() {
std::cout << func(2) << std::endl;
}
当我多次运行可执行文件时,每次运行都会返回不同的值。这使我感到困惑,我希望编译器会删除所有变量名,并用固定的内存地址替换它们,因此,在每次运行可执行程序时,我都应该获得相同的值?
最佳答案
请检查Address space layout randomization的一种可能原因,即每次运行a
变量都会存储在不同的地址。