一、如何判断发生了空指针的异常
1)程序明显提示访问了0x0000000000000000地址
如下图:
2)访问了地址0x0附近的地址的也可怀疑程序可能访问了空指针。
原因:如果访问结构体指针的成员s->b,b的偏移量是4,若b成员占用4个字节, 则s就是NULL,b的地址被计算成0x4
二、程序奔溃的原因(转)
-
函数栈溢出
一个变量未初化、未赋值,就读取它的值。
( 这属于逻辑问题,往往是粗心大意的导致的 ) -
函数栈溢出
(1)定义了一个体积太大的局部变量
(2)函数嵌套调用,层次过深(如无穷递归) -
数组越界访问
访问数组元素时,下标越界 -
指针的目标对象不可用
(1)空指针
(2)野指针
指针未赋值
free/delete释放了的对象
不恰当的指针强制转换
三、程序中预防出现空指针
- 在使用指针时,要判断一下指针是否为空