Qual parte do dereferenciamento de ponteiros NULL causa comportamento indesejado?

Estou curioso para saber qual parte da desreferência de um pulo NULL causa um comportamento indesejado. Exemplo:

//  #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

Aqui vemos em # 2 que eu realmente não tentei acessar dados ou uma função de b, então isso ainda causaria um comportamento indesejado se * b apenas resolvesse para NULL e nós estivéssemos passando NULL para anotherfunc ()?

questionAnswers(16)

yourAnswerToTheQuestion