闭坑指南 · C#指针 #内存 #经典错误
野指针与悬空指针
指向已释放内存或无效地址,读写都是未定义行为。
野指针与悬空指针
类型
- 野指针:未初始化就使用
- 悬空指针:指向已
free的内存 - 越界指针:
p + 1000超出分配范围
为何危险
UB 可能「看起来能跑」:打印旧值、偶尔崩溃、被 exploit。不能靠运气。
习惯
- 初始化指针:
int *p = NULL; free后立即p = NULL- 不要用已返回栈地址的指针(返回局部变量地址)
在线示例只演示合法路径;注释掉的是故意不运行的 UB 示范。