悬空指针:它曾经指向一个有效地址,但是现在不再指向有效地址(个人添加,其实就是原来的那块地址不能通过这个指针区访问了)。这通常是因为指针所指的内存单位被释放了并且不再有效了。空悬指针存在并没有什么问题,除非你尝试通过这个指针访问指向的地址空间。不遗留任何悬空指针总是最好的实践方式。
#include <iostream>
using namespace std;
int main()
{
int *p = new(int);
cout << "before delete p = " << p << endl;
*p = 3;
delete p;
*p = 2;
cout << "after delete p = " << p << endl;
cout << "main end!" << endl;
return 0;
}
野指针:它没有被正确的初始化于是指向一个随机的内存地址。存在野指针是一个严重的错误。
#include <iostream>
using namespace std;
int main()
{
int *p; // 没有初始化p指针
cout <<"p = " << p;
*p = 10;
cout << "p = "<< endl;
return 0;
}
原文链接:
https://blog.youkuaiyun.com/eszrdxtfcygv/article/details/38523659