#include <stdio.h>
int main()
{
return 0;
}
它给
text data bss dec hex filename
960 248 8 1216 4c0 a.out
当你这样做时
int a;
int main()
{
char *p = "hello";
return 0;
}
它给
text data bss dec hex filename
982 248 8 1238 4d6 a.out
当时 hello 存储在.rodata
其中,该地址的位置存储在 char 指针中p
,但这里 p 存储在堆栈中
并且大小不显示堆栈。我不确定,但 .rodata 在这里以文本或 dec 计算。
当你写
int a;
char *p = "hello";
int main()
{
return 0;
}
它给
text data bss dec hex filename
966 252 8 1226 4ca a.out
现在这里再次将“hello”存储在 .rodata 中,但 char 指针占用 4 个字节并存储在数据中,因此数据以 4 递增
欲了解更多信息http://codingfreak.blogspot.in/2012/03/memory-layout-of-c-program-part-2.html