Hai ragione, era un caso fortuito 
Tanto per divertircisi un po':
codice:
gr3yfox test $ cat o.cpp
#include<iostream>
using namespace std;
int main(int argc, char **argv) {
{
int x = -143;
cout << &x << " " << x << endl;
}
{
int x;
cout << &x << " " << x << endl;
}
int x;
cout << &x << " " << x << endl;
}
gr3yfox test $ g++ o.cpp -o o -O0 && ./o
0x7fffed34e0d0 -143
0x7fffed34e0cc 0
0x7fffed34e0d4 32767
gr3yfox test $ g++ o.cpp -o o -O1 && ./o
0x7fff1fe34bc0 -143
0x7fff1fe34bc0 -143
0x7fff1fe34bc4 32767
Le tre variabili x differenti se compilate senza ottimizzazioni finiscono in celle differenti, mentre se si ottimizzza il compilatore riesce a capire che le prime due possono condividere lo stesso indirizzo.