I am curious as to what part of the dereferencing a NULL ptr causes undesired behavior. Example:
// #1 someObj * a; a = NULL; (*a).somefunc(); // crash, dere
NULL is just 0. Since 0 doesn't point to a real memory address, you can't dereference it. *b can't just resolve to NULL, since NULL is something that applies to pointers, not objects.