Какая часть разыменования указателей 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 ()?