gpt4 book ai didi

c - main函数中第一个变量地址是固定的吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:36 24 4
gpt4 key购买 nike

当我尝试打印 main 函数中第一个变量的地址时,我发现运行几次后结果总是相同的。为什么?是在虚拟内存还是物理内存?

#include <stdio.h>

int main()
{
int a;

printf("a's address is %p\n", &a);

return 0;
}

我预计每次输出都会不同,但实际输出始终是 0028FF3C

最佳答案

在某些系统上,ASLR已启用,并且有充分的理由。

例如,在我的 Linux/Debian/Sid x86-64 上,您的程序每次都给出不同的地址:

repeat 10 tmp/sange
a's address is 0x7fff2768303c
a's address is 0x7ffc5d26a57c
a's address is 0x7ffcc0a4b2ac
a's address is 0x7ffeec95fd7c
a's address is 0x7ffefd5318dc
a's address is 0x7ffc544497bc
a's address is 0x7fff232f7dac
a's address is 0x7fff9dd3b65c
a's address is 0x7fff9e6858dc
a's address is 0x7ffc2876d4bc

要了解更多信息,请阅读 undefined behavior (例如 Lattner's blog ),unspecified behavior ,并阅读一本关于操作系统的好教科书,例如Operating Systems: Three Easy Pieces (可免费下载)

另请阅读 virtual address space .

关于c - main函数中第一个变量地址是固定的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56040278/

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