gpt4 book ai didi

c++ - 为什么函数的地址(地址的低位字)在每次执行中总是相同

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:51 28 4
gpt4 key购买 nike

我在 main() 中编写了以下代码

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

cout<<endl<<"Address of Addition is: "<<Addition<<endl;

现在每次我执行它。我得到这样的值:

Address of Addition is: 01161450

Address of Addition is: 001B1450

Address of Addition is: 00F91450

等等..

正如我们所见,地址每次都不同,尽管所有地址都有一个共同的低位字 (1450-H)。那么背后的原因是什么?

最佳答案

函数的地址由编译器和链接器相对于程序空间的开始定义。然而,操作系统可以自由地从它想要的任何地方开始加载程序,并且由于 Address Space Layout Randomization每次运行都会改变。看来您的操作系统使用的起始地址是 0x10000 的倍数。

关于c++ - 为什么函数的地址(地址的低位字)在每次执行中总是相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049477/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com