【C++】野指针与内存践踏

1. 野指针

  • 野指针

    • 泛指指向“非法”内存地址的指针
    • 场景:没有初始化的指针(其值随机)、悬垂指针、指向非法地址的指针(比如指向数组越界的内存)
    • 避免:不使用裸指针、定义指针一定要初始化nullptr、delete/free后立即置nullptr、避免返回局部栈内存
  • 悬垂指针:特指曾经指向有效对象,但该对象已被销毁。此时指针保存的地址仍然指向原内存,但该内存已归还系统或被重用。

2. 内存践踏

  • 指对非法内存地址进行写操作,意外覆盖了其他数据,导致程序崩溃或数据损坏。
  • 场景:
    • 向野指针指向内存(数组越界的内存、溢出的缓冲区)写数据,内存地址不可预知,可能破坏其中已有的数据
    • 向悬垂指针指向内存写数据,先前内存已释放,可能已存储了其他数据,覆盖会破坏其他数据。
posted @ 2026-02-25 20:30  仰望星河Leon  阅读(1)  评论(0)    收藏  举报