1. 空悬指针和野指针
空悬指针
定义:指向已经销毁的对象或已经回收的地址。
影响:当对象被析构、删除时,如果指向它的指针没有被同时修改,那么指针指向的仍是原来的内存地址,若系统此时重新分配这块free掉的内存,就可能会有不可预见的事情发生。
char *ptr = (char*)malloc(sizeof(char));
free(ptr); //释放动态分配的内存,ptr为空悬指针
ptr = NULL; //修改ptr指向
野指针
定义:未经初始化的指针
char *ptr; //野指针
static char *ptr; //非野指针,静态变量默认初始化为0
解决措施
- 创建指针时必须注意初始化
- 释放指针指向的内存之后必须将指针置空;