并不是使用空指针就会crash。
对于C++的成员函数来说,第一个参数为隐含的this指针,如果一个类己释放,同时将指针也置空了,或者没有创建,也就是this指针为空,但我们还是可以调其成员函数的,只是会将第一个参数传为nullptr了,如果巧好这个成员函数没有虚函数调用,也没有成员访问,是不会崩溃,这点在查看栈的时间有一定的误导性。
#include <iostream>
class A
{
public:
void fun()
{
std::cout << "Hello World!\n";
}
int a;
};
int main()
{
A* p = nullptr;
p->fun();
}