代码是
/* 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”之间的段数据不同?