1

コードは

/* 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」の間のセグメント データが異なるのはなぜですか?

4

1 に答える 1