在我编译代码之后

#include <iostream>

int* func(int a) { return &a; }

int main() {
std::cout << func(2) << std::endl;
}

当我多次运行可执行文件时,每次运行都会返回不同的值。这使我感到困惑,我希望编译器会删除所有变量名,并用固定的内存地址替换它们,因此,在每次运行可执行程序时,我都应该获得相同的值?

最佳答案

请检查Address space layout randomization的一种可能原因,即每次运行a变量都会存储在不同的地址。

10-08 00:44