that's what mapping an -rwx page at 0x0 does, and as a result it segfaults, which is an access violation.
http://blog.llvm.org/2011/05/what-every-c-programmer-should-...
First, mapping that page doesn't cause all null pointer dereferences to segfault.
And second, the language doesn't require a segfault. In fact, it explicitly permits the implementation to do whatever it likes.
That is the difference between safe and unsafe. It is in the language definition.
C doesn't define behaviour of a null deref, but most compilers map a -rwx page there to ensure that attempts to deref fault.
In what circumstance do they not?
http://blog.llvm.org/2011/05/what-every-c-programmer-should-...