Dass es keinen Fehler gibt beim Zugriff auf Daten mit einem NULL-Pointer kann ich kaum glauben. Normalerweise gibts da einen MCH-Fehler (Adresse nicht gesetzt).

Wenn du zu wenig Speicher zuordnest und dann auf Speicher dahinter zugreifst merkt das System das ggf. nicht solange der intern zugewiesene Speicher ausreicht.
Der Programmierer ist da vollkommen auf sich selbst gestellt.

Durch Adress-Arithmetik kann man beliebige Speicheradressen berechnen. Solange diese zugriffsberechtigt sind, gibts keinerlei Probleme.
Man kommt sogar an Systembereiche und fremde Job's (z.B. fremde QTEMP's) und kann ggf. auch modifizieren bis zum Systemabsturz (und zwar gewaltig).

Ich hatte da ganz früher mal ein Testprogramm geschrieben, was anschließend zur Neuinstallation des Systems zwang, da ich einen Systemzeiger verbogen hatte und kein einziges CMD mehr gestartet werden konnte.