野指针 & 空指针
野指针:
指向未知的内存
出现的原因:
1), 未初始化
2), 指针访问数组越界
3), 指针指向的内存被释放
对于3),一个有趣的情况解释:
函数调用后内部的局部变量不会重置为0,但是空间会归还给操作系统,也就是说如果有指针指向函数的中的变量,函数执行完后指针指向的值任然不变。
空指针:
指向不存在的内存
出现的原因:
1), 指针赋初值为Null
(注意null和nullptr不一样)
解释:
“NULL在C++中就是0,这是因为在C++中void* 类型是不允许隐式转换成其他类型的,
所以之前C++中用0来代表空指针,但是在重载整形的情况下,会出现上述的问题。
所以,C++11加入了nullptr,可以保证在任何情况下都代表空指针,而不会出现
上述的情况,因此,建议以后还是都用nullptr替代NULL吧,而NULL就当做0使用。
原文链接:https://blog.csdn.net/qq_18108083/article/details/84346655”
欢迎指正