【C++】野指针与内存践踏
1. 野指针
-
野指针
- 泛指指向“非法”内存地址的指针
- 场景:没有初始化的指针(其值随机)、悬垂指针、指向非法地址的指针(比如指向数组越界的内存)
- 避免:不使用裸指针、定义指针一定要初始化
nullptr、delete/free后立即置nullptr、避免返回局部栈内存
-
悬垂指针:特指曾经指向有效对象,但该对象已被销毁。此时指针保存的地址仍然指向原内存,但该内存已归还系统或被重用。
2. 内存践踏
- 指对非法内存地址进行写操作,意外覆盖了其他数据,导致程序崩溃或数据损坏。
- 场景:
- 向野指针指向内存(数组越界的内存、溢出的缓冲区)写数据,内存地址不可预知,可能破坏其中已有的数据
- 向悬垂指针指向内存写数据,先前内存已释放,可能已存储了其他数据,覆盖会破坏其他数据。

浙公网安备 33010602011771号