int* a = new int[5] - 1;
This line by itself invokes undefined behavior according to the C++ standard because a is an invalid pointer and not one-p
I think this could possibly be unsafe on some old 16 bit x86 systems. The address is "split" between an address register and a segment register and I would guess that this could result in an invalid value being loaded into a segment register which would cause an exception.
Probably not an issue as it's not a common architecture these days.