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?