Because the location of the function implFunc()
is known. It has an address, therefore we know that we're inside it when we look at the call stack.
However, the this
pointer that was used to call that function is set to 0
(or really, some undefined, but unallocated, value - depending on how it's used).
You can think of member methods like functions that take an implicit first argument as the this
value (in fact, that's exactly what happens on many platforms). You don't need pointers to be valid in order to call a function. The call will at least reach the function, and thus place the function's location on the call stack (which is what is used to generate a backtrace), and what happens inside the function is up to whether or not you dereference that pointer.
Your scenario, then, means you called that function with the implicit first parameter being a NULL
pointer. The function call itself succeeded, but the pointer being used inside the function (method) failed because you dereferenced a null pointer.