Какая часть разыменования указателей NULL вызывает нежелательное поведение?

Мне интересно, какая часть разыменования NULL ptr вызывает нежелательное поведение. Пример:

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

Здесь в # 2 мы видим, что я на самом деле не пытался получить доступ к данным или функции из b, поэтому будет ли это вызывать нежелательное поведение, если * b просто преобразуется в NULL и мы передаем NULL в anotherfunc ()?

Ответы на вопрос(15)

Ваш ответ на вопрос