为什么函数的地址(较低的地址字)在每次执行时总是相同的

Fai*_*ist 1 c++ operating-system pointers function-pointers visual-c++

我在main()中做了以下代码

int (*Addition)(int x, int y) = FuncAdd;

cout<<endl<<"Address of Addition is: "<<Addition<<endl;
Run Code Online (Sandbox Code Playgroud)

现在我每次都执行它.我得到这样的价值观:

增加的地址是:01161450

增加的地址是:001B1450

增加的地址是:00F91450

等等..

正如我们所看到的,每次地址都不同,尽管所有这些地方都有较低的单词(1450-H).那背后的原因是什么?

Mar*_*som 5

函数的地址由编译器和链接器相对于程序空间的开头定义.然而,操作系统可以自由地在任何需要的地方加载程序,并且由于地址空间布局随机化,它将随着每次运行而改变.您的操作系统似乎使用的起始地址是0x10000的倍数.