// 考虑这种情况:通过指针赋值释放掉内存,再去解引用原始指针会怎么样
int main()
{
int* ptr = new int(1);
int* pint = ptr;
delete pint;
pint = nullptr;
if (ptr)
{
cout<<*ptr<<endl; // 使用野指针,其结果是不明确的
}
}
// 解决方法,通过引用指针赋值
int main()
{
int* ptr = new int(1);
int* &pint = ptr;
delete pint;
pint=nullptr;
if (ptr) // ptr == nullptr
{
cout<<*ptr<<endl; // 这个地方不会执行
}
}