No, assolutamente no . Se questo fosse ciò che accade invariabilmente, potremmo usarlo a nostro vantaggio e specificarlo nello standard; Il comportamento noto , anche se si tratta di un arresto anomalo, è praticamente sempre migliore del comportamento sconosciuto .
Invece, la risposta del sistema dipende dai dettagli dell'implementazione, dalle precedenti azioni del programma, dallo stato del runtime ecc. in modo imprevedibile. Nei sistemi operativi moderni che fanno riferimento a un indirizzo che non appartiene a te, solitamente attiva una violazione di segmentazione, ma sicuramente non sempre. Potrebbe verificarsi una violazione della segmentazione, ma non molto tempo dopo. Ancora peggio, il tuo programma potrebbe sembrare funzionare ma silenziosamente fare la cosa sbagliata. Ecco perché lo standard di linguaggio deve prendere la peggiore opzione possibile e dichiarare che il comportamento è non definito .
(Si noti che la bontà dipende dal punto di vista.Per l'implementatore del compilatore, il comportamento indefinito è buono perché significa che qualunque cosa tu faccia è, per definizione, giusta.Per il programmatore di applicazioni è cattivo, perché porta a errori di applicazione, e persino al tipo di errori particolarmente insidiosi in cui le cose a volte funzionano e poi falliscono in modo spettacolare nel momento meno opportuno.)