野指针
指针变量的本质是值,存放的是内存地址。合法的内存地址直的是定义的变量地址(栈),或者是malloc分配的地址(堆)。
野指针通常是指保存的值不是一个合法内存地址,或者指向一个不可用的内存地址。
而且野指针往往会造成内存越界、段错误等难以找到的问题。
野指针产生原因
- 局部指针变量没有初始化。局部变量不像全局变量那样,不赋值会自动初始化为0。
- 使用已经释放过的指针。
- 指针指向的变量在指针之前被销毁。
- 进行了错误的指针运算。
- 进行了错误的强制类型转换。
避免野指针
- 定义指针时,同时初始化为NULL 。
- 在指针解引用之前,判断指针是否为空。
- 将指针使用完之后赋值为NULL。
- 在指针使用之前,将其赋值绑定一个可用空间。