There's another funny thing about gcc3 behavior which I've just discovered:

$ gcc -v 2>&1 | grep version
gcc version 3.4.2

$ gcc -o mem mem.c ; ./mem
-1024
$ gcc -o mem1 mem1.c ; ./mem1
0

$ cat mem.c
#include <stdio.h>

int main() {
        char *p1, *p2;
        {
                char a[1024];
                p1 = a;
        }
        {
                char a[1024];
                p2 = a;
        }
        printf("%d\n", p2 - p1);
        return 0;
}

$ cat mem1.c
#include <stdio.h>

static const int N = 1024;

int main() {
        char *p1, *p2;
        {
                char a[N];
                p1 = a;
        }
        {
                char a[N];
                p2 = a;
        }
        printf("%d\n", p2 - p1);
        return 0;
}


Alexey

Reply via email to