Il problema non si presenta solo "per caso", perché la memoria che vai ad usare è comunque allocata al processo che si sta eseguendo, ma quel codice è comunque gravemente sbagliato.
Del resto, logicamente, pensa al fatto che le istruzioni di un programma sono eseguite in sequenza, dalla prima verso l'ultima. Se non hai ancora eseguito la scanf per l'input di x, la x conterrà un valore casuale con cui verrà preparato il vettore. Quindi, lo spazio allocato non sarà quello che tu indichi ma casuale.