未初始化和非法的指针
运气好的情况:定位到一个非法地址,程序会出错,从而终止 运气差的情况:定位到一个可以访问的地址,无意修改了它,这样的错误难以捕捉,引发的错误,可能与原先用于操作的代码完全不相干
NULL指针
一个特殊的指针变量,表示不指向任何东西
int *a = NULL;
- NULL指针 它给了一种方法,来表示特定的指针目前未指向任何东西 使用注意事项:
- 对于一个指针,如果已经知道将被初始化为什么地址,那么请赋给它这个地址值,否则请把它设置为NULL
- 在对一个指针进行间接引用前,请先判断这个指针的值是否为NULL
杜绝野指针
指向“垃圾”内存的指针,if等判断对它们不起作用,因为没有置NULL
一般有三种情况
- 指针变量没有初始化
- 已经释放不用的指针没有置为NULL,如delete和free之后的指针(清除heap)
- 指针操作超越了变量的作用范围 {}
指针使用的注意事项
没有初始化的、不用的或者超出范围的指针请把值置为NULL