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.