gpt4 book ai didi

c - 为什么数据段(ds)是0?甚至还有其他合法变量(整数)

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:55 26 4
gpt4 key购买 nike

我写了下面的 C 程序。

int main() {
int i = 3;
char *q = "hello";
char *p = NULL;
return 0;
}

当我用gdb编译和调试它时,我得到以下reg信息..

gcc main.c -g
gdb a.out

info reg:
cs 0x33 51
ss 0x2b 43
ds 0x0 0

我的问题是,如果 ds 为 0,整数 ichar* q 如何获得它们的物理地址?

最佳答案

这取决于编译器。数据段是程序虚拟地址空间的一部分,其中包含由程序员初始化的全局变量和静态变量。默认情况下初始化为零的全局和静态分配数据将保留在所谓的进程的 BSS 区域中。堆是动态内存(通过 malloc()、calloc()、realloc() 和 new – C++ 获得)的来源。 .堆栈段是分配局部(自动)变量的地方。所以 i , p 和 q 存储在堆栈段中。代码段包含编译后的程序。 RO(只读)段包含常量字符串,如“Hello”

关于c - 为什么数据段(ds)是0?甚至还有其他合法变量(整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16138198/

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