コードは
/* test_etext.c */
#include <unistd.h>
#include <stdio.h>
extern char etext, edata, end;
int
main(int argc, char *argv[])
{
pid_t pid, ppid;
pid = getpid();
ppid = getppid();
printf("%ld\t%ld\t%ld\n", &etext, &edata-&etext, &end-&edata);
return 0;
}
次に、このようにコンパイルして実行します
gcc -o test_etext test_etext.c
./test_etext
4196125 2099507 8
size ./test_etext
text data bss dec hex filename
1532 592 8 2132 854 ./test_etext
問題は、「&edata-&etext」と「data」の間のセグメント データが異なるのはなぜですか?