메모리 레이아웃

#define PRADDR(X) printf(" %s at %o and value = %o\n","X",&X,X)
extern etext, edata, end;
static char s = 'S';
int a,b = 1;

main(argc,argv)
int argc;
char *argv[];
{
void sub1();
static int c, d =1;
char m,n = 'n';

printf("main at %o and sub1 at %o\n",main,sub1);
printf("end of text segment at %o\n",&etext);

PRADDR(s);      PRADDR(b);
PRADDR(c);      PRADDR(d);

printf("end of statics & initialized externals at %o\n", &edata);

PRADDR(a);

printf("end of uninitialized externals at %o\n", &end);

PRADDR(m);      PRADDR(n);
PRADDR(argc);      PRADDR(argv);
for(b = 0; b<argc; b++)
        printf("argv[%d] at %o and value = %o or %s\n",
               b, &argv[b], argv[b], argv[b]);
       sub1(c);
}

void sub1(p)
int p;
{
static int t;
char v;

PRADDR(t); PRADDR(p); PRADDR(v);
}

Comments