什么是野指针
野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
野指针成因
指针未初始化:局部变量指针未初始化,默认为随机值
在这里我们可以访问修改指针变量本身的内存地址,但是不能解引用来访问变量中存储的垃圾值(也就是把垃圾值当作一个内存地址来解引用了),因为解引用垃圾值所代表的内存单元的控制权限并没有分配给此程序
指针越界访问:当指针指向的范围超出数组的范围时,就是野指针
指针指向的空间释放:当指针中地址已经被销毁\释放的时候,这个指针就成为了野指针
规避野指针的方法
1. 指针初始化
2. 小心指针越界
3. 指针指向空间释放即使置NULL
4. 避免返回局部变量的地址
5. 指针使用之前检查有效性