Grace's Dev Site
write关于我
闭坑指南 · C#指针 #内存 #经典错误

野指针与悬空指针

指向已释放内存或无效地址,读写都是未定义行为。

野指针与悬空指针

类型

  • 野指针:未初始化就使用
  • 悬空指针:指向已 free 的内存
  • 越界指针p + 1000 超出分配范围

为何危险

UB 可能「看起来能跑」:打印旧值、偶尔崩溃、被 exploit。不能靠运气。

习惯

  • 初始化指针:int *p = NULL;
  • free 后立即 p = NULL
  • 不要用已返回栈地址的指针(返回局部变量地址)

在线示例只演示合法路径;注释掉的是故意不运行的 UB 示范。

在线运行 C

GCC (Piston)