空指针:指针被赋值为空
例如:
- int* p = nullptr;
- int* p = NULL;
空指针指向的地址是00000000,但空指针不可以解引用
野指针:指针指向了不可控的位置
例如:
-
未初始化
int* p; //野指针
-
越界访问
int intArr[5]{0, 1, 2, 3, 4};
int* p = &intArr[5]; //野指针
-
指向被释放的空间
第一种情况,局部变量被释放
string* uArr[2]{};
void Test()
{
string a = “abc”; //局部变量,存放在栈中,函数结束就释放空间
uArr[0] = &a;
cout << uArr[0] << endl; //这里能打印出abc
}
Test();
cout << uArr[0] << endl; //这里已经是野指针了
第二种情况,delete
int* p =new int;
delete p; //释放p所在的空间
cout << p << endl; //这是p就是野指针
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)