5.1.2.1 数组边界检查 5.1.2.1 数组边界检查:当 在第 10000001 次调用时悄然越界——一次被编译器“纵容”的内存谋杀案 你有没有过这样的经历? 一个 C 程序,在开发机上跑得稳如泰山,单元测试全绿,静态扫描无告警,ASan(AddressSanitizer)也沉默如谜;可一旦部署到客户现场的 ARM64 边缘设备上,它就在某个特定温度区间、某次 GPS 定位触发后、第 10,000,001 次循环迭代中——无声崩溃。日志只留下一行: 。没有堆栈,没有符号,连 core dump 都被裁剪掉了。运维同事发来截图,进程状态是 (uninterruptible sleep),而 里,最后一段映射赫然是 —— 1MB 的匿名页,刚刚被 分配,却在写入偏移 处戛然而止。