Welcher Teil der Dereferenzierung von NULL-Zeigern führt zu unerwünschtem Verhalten?

Ich bin gespannt, welcher Teil der Dereferenzierung eines NULL-PTR unerwünschtes Verhalten verursacht. Beispiel:

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

Hier sehen wir in # 2, dass ich nicht wirklich versucht habe, auf Daten oder eine Funktion außerhalb von b zuzugreifen. Würde dies immer noch zu unerwünschtem Verhalten führen, wenn * b nur zu NULL aufgelöst wird und wir NULL an anotherfunc () übergeben?

Antworten auf die Frage(16)

Ihre Antwort auf die Frage