#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 はここで text または 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