Напомню лишний раз, что не важно, остаётся ли жива программа, запись по такому указателю представляет собой неопределённое поведение (Undefined Behavior). Это значит, формально, программа может форматнуть жёсткий диск или призвать демонов. Почему компилятор или программа не ловит такие ошибки — проверять доступ к памяти накладно, поэтому приходится всецело доверять тому, что ты знаешь, что делаешь.
На заметку, это тоже неопределённое поведение:
int a = 1;
int b = 2;
*(&a + 1) = 42;
Ходить указателями разрешается только в пределах массива.
UPD: Даже сама операция сложения, без разыменования - уже UB (
пруф):
*(&a + 2 - 2) = 42; // UB