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