КодРезультат команды «размер» в Linux и значения текста и EDATA & конец разные
/* 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» различны?
Спасибо, слово «прошлое», которое заставляет меня смутить. Я думал, что позиция конца текстового сегмента и etext непрерывна. – conjohn668