实用的内存安全:Fil-C 并非万无一失,安全是一个谱系
来源:ohadravid.github.io — 2026-08-03
📋 概述
Zig 正在考虑采用 Fil-C 式的“内存安全”编译目标,作者借此辨析内存安全的含义。他指出 Fil-C 对内存安全的定义(运行时检查防止可被利用的错误)与 Rust 不同:像 strcpy 覆盖已分配内存这类“技术上不可利用”的越界在 Fil-C 中仍被允许。作者提出一个务实的定义:内存安全代码是“内存规则直观易遵循,除非有显式的大招牌说否则”。安全程度是一个谱系,但对使用者来说,真正重要的是安全边界清晰可循。
🔑 核心要点
- Fil-C 把内存安全定义为“防止可被利用的内存错误”,与 Rust 定义不同
- 示例:strcpy 溢出自己分配的内存仍不会在 Fil-C 中被拦截(技术上不可利用)
- 务实的定义:内存安全是内存规则直观易循,除非有明确招牌说“否则”
- 内存安全是一个谱系,Fil-C 确实比 Yolo-C 更安全,但并非对使用者真正“安全”
- 若安全侧也有难以遵守的规则,画出这条边界还有意义吗
- Python/Rust 等通过 FFI、unsafe 等显式构造清晰标出“出界”点,反而真正安全
💡 金句
规则简单且自动执行,比规则复杂而不被检查,更容易被正确遵守——但如果你给每次内存访问都加个星号注释,那“安全”这个词还有什么意义?
👍 0
👎 0
← 返回 Lobsters 首页