¿Qué parte de la desreferenciación de los punteros NULL causa un comportamiento no deseado?

Tengo curiosidad por saber qué parte de la anulación de la referencia a un valor nulo provoca un comportamiento no deseado. Ejemplo:

//  #1
someObj * a;
a = NULL;
(*a).somefunc();   // crash, dereferenced a null ptr and called one of its function
                   // same as a->somefunc();

//  #2
someObj * b;
anotherObj * c;
b = NULL;
c->anotherfunc(*b);   // dereferenced the ptr, but didn't call one of it's functions

Aquí vemos en el # 2 que en realidad no intenté acceder a los datos o a una función fuera de b, ¿así que esto todavía causaría un comportamiento no deseado si * b simplemente se resuelve en NULL y estamos pasando NULL a anotherfunc ()?

Respuestas a la pregunta(16)

Su respuesta a la pregunta