如果有人告诉你,过去几十年里,几乎所有最致命的软件漏洞——从勒索病毒攻破系统到浏览器被远程接管——其根源都是同一类问题,你大概会觉得不可思议。但这正是微软安全响应中心(MSRC)在 2019 年给出的残酷结论:他们修补的安全漏洞里,约 70% 都属于"内存安全(memory safety)"问题。Google 对 Chrome、对 Android 给出了几乎一模一样的数字。也就是说,攻陷现代软件最锋利的刀,从来不是什么惊天逻辑漏洞,而是程序员手滑时多写或少写的那一个指针。
这正是 Travis Media 这支 25 万播放量视频《A New Era for C and C++? Goodbye, Rust?》切入的命题。它没有停留在"Rust 好安全、C++ 好危险"的口水战层面,而是把镜头对准一个更刺激的悬念:C++ 正在拼命给自己打"安全补丁",它能不能借此把 Rust 这个颠覆者按回去? 这是 2026 年编程世界最值得围观的一场战争,因为它决定了未来十年我们用什么语言去写操作系统、浏览器内核、自动驾驶和卫星。这支视频的价值,在于它把一场看似技术宅的口水战,还原成了一个关于"遗留遗产 vs 安全债务"的真实商业博弈。
| 项目 | 内容 |
|---|---|
| 视频标题 | A New Era for C and C++? Goodbye, Rust? |
| 频道 | Travis Media(编程教育频道,聚焦 C++/系统编程) |
| 时长 | 约 15 分钟级深度讲解 |
| 播放量 | 约 25 万次(249,961) |
| 发布日期 | 2024 年 11 月 24 日 |
| 核心主题 | 内存安全革命:C++ 的安全反扑能否挡住 Rust |
视频的开局先把一颗重磅数据摆在台面上:绝大多数高危漏洞,根子都在内存。这并非夸大。微软的 Matt Miller 在 2019 年 BlueHat 大会上公布,2006—2018 年间 MSRC 处理的漏洞中约 70% 是内存安全问题;Google Chrome 团队后来也确认,Chrome 的高危/严重级安全 bug 里,同样约 70% 来自内存安全。这些 bug 有几个让人闻风丧胆的名字:
我的延伸分析是:内存安全 bug 之所以可怕,在于它们可被远程利用且往往可被武器化。一个逻辑错误顶多让程序算错结果,而一个 use-after-free 常常意味着"远程代码执行(RCE)"——攻击者可以在你的机器上跑任意代码。这就是为什么美国国家安全局(NSA)2022 年公开建议"优先使用内存安全语言",而 2024 年 2 月白宫国家网络主管办公室(ONCD)干脆发布报告《Back to the Building Blocks》,直接呼吁整个软件行业迁移到内存安全语言。内存安全已经从"工程洁癖"升级成了"国家安全议题"——这是理解整场语言战争的大前提。
视频反复强调一个反直觉的点:Rust 给了你能和 C/C++ 掰手腕的极致性能,却没有用垃圾回收(GC)。这听起来像骗人——Java、Go、C# 这些"安全语言"不就是靠 GC 在运行时替你管内存的吗?去掉 GC 还能安全,靠什么?
答案是 Rust 的三件套,全部在编译期完成,运行时零开销:
&T,要么有唯一一个可变引用 &mut T,二者不能共存。这一条直接消灭了"数据竞争(data race)"。这套机制就是臭名昭著的"借用检查器(borrow checker)"。新手骂它,因为它让你和编译器反复搏斗;但老手爱它,因为它把整类 bug 从可能性里彻底抹掉。视频的核心论点是:Rust 之所以是颠覆者,不是因为更快(其实和精心优化的 C++ 相当),而是因为它在编译期就证明了内存安全,且不付出 GC 的运行时代价——这对操作系统内核、嵌入式设备、游戏引擎、高频交易这些"既要安全又要极致性能"的场景,是降维打击。
这里我必须把视频没讲透的"路线之争"补全,因为它才是"C++ 能否反杀"的关键。获得内存安全,主流只有两条路:
路线 A:运行时安全(GC)——Java、Go、C#、Python。GC 在运行时扫描哪些内存没人用了再回收。优点是程序员几乎不用操心,缺点是你要付出停顿延迟、内存占用膨胀、以及不可预测的回收时机。Java 一个简单服务吃掉几百 MB 内存是常态;GC 停顿对实时系统是灾难。所以你永远不会看到有人用 Java 写一个操作系统内核。
路线 B:编译期安全(Rust)——把安全的"证明"提前到编译阶段。运行时零开销,代价是编译变慢、学习曲线陡峭、某些场景必须用 unsafe 绕过。
而 C/C++ 是第三类异类:既没 GC,也没编译期保证,靠程序员全程手动 malloc/free 或裸指针操作。这就是为什么它最快,也最致命。一个程序员的疲惫、一次复制粘贴、一个边界算错,就是一道被攻击的口子。
我的判断是:Rust 真正的历史意义,是它第一次证明"零开销安全"在工程上可行。此前业界默认"安全"和"性能/控制力"是鱼和熊掌,Rust 把这条隐形的权衡曲线整个撬动了。这正是让 C++ 阵营恐慌的根本原因——他们曾经以为"想要 C++ 的性能就得忍受它的危险"是宇宙铁律。
视频的标题"Goodbye, Rust?"之所以挑衅,是因为它讲的不是 C++ 坐以待毙,而是C++ 正在组织一场声势浩大的"安全自救"。这部分是视频最有信息量的地方,我结合 2026 最新进展展开。
C++ 的反击核心是"渐进式加固":不重写语言,而是给现有 C++ 加一层可选的安全层,让新代码可以逐步变安全。两大动作:
Safe C++ 提案(Sean Baxter,2023—2024):提出用"安全配置文件(profiles)"给代码标注安全级别,在一个超集里圈出"可被静态证明安全"的子集。它的哲学是:不破坏 40 年积累的 C++ 生态,而是让你写的每一块新代码可以选择"安全模式"。这其实是向 Rust "偷师"——既然 Rust 证明了编译期能管内存,那 C++ 也加一个静态检查层不就行了?
C++26 的 safe buffers(P3309,"Targeting memory safety in C++"):由 C++ 之父 Bjarne Stroustrup 和 Sean Baxter 联合推动,2025 年被 WG21 标准委员会投票纳入 C++26 工作草案。它给数组/缓冲区引入带边界检查的安全访问,从"最常见的内存 bug"开刀。
视频在这里抛出了真正的悬念:这套"打补丁"路线,够不够挡住 Rust? 我的分析是——难,而且难在三个死结:第一,C++ 有约 40 年、上百亿行的遗留代码,新安全层只能管新代码,老代码的债务纹丝不动;第二,C++ 不敢破坏ABI 兼容,否则整个生态(包括 Windows、游戏引擎、金融系统)都要崩;第三,安全在 C++ 里是"opt-in 可选",而 Rust 是"by default 默认"——一字之差,工程结果天差地别。Rust 的安全是你不费吹灰之力就得到的,C++ 的安全是你得记得去开启、还得保证团队每个人都记得。
那么视频标题那个问号,答案是什么?综合视频倾向和我对 2026 局势的判断,结论是:C++ 反杀不了 Rust,但 Rust 也吞不掉 C++,二者将长期共存并分工。证据已经写在产业版图里:
所以"Goodbye, Rust?"这个标题更像一个钓鱼式反问:它用挑衅吸引你进来,然后用事实告诉你——语言战争从来不是零和游戏。真正发生的,是整个行业被 Rust 抬高了安全水位,C++ 被迫跟着升级。无论你站哪边,你写的代码都比五年前安全得多。
视频里还藏着一条常被忽略的暗线,值得单独点出:即使 Rust 也不是 100% 绝对安全。Rust 保留了 unsafe 关键字作为"逃生舱",用来做底层指针操作、调用 C 的 FFI(外部函数接口)、实现基础数据结构(比如 Vec、Mutex 的内部实现本身就离不开 unsafe)。
业界甚至有个著名梗——可以"用一行 unsafe 代码"打破 Rust 的安全保证(这正是另一支热门视频《Breaking Rust's memory safety with 1 line of code》讨论的话题)。这说明一个更深层的工程哲学:安全是一种契约(contract),而非物理定律。Rust 把"不安全"压缩到了最小的、可审计的、被隔离在 unsafe 块里的区域;而 C++ 把"不安全"散布在每一行代码里。这就是两者安全水位差异的本质——不是"有没有漏洞",而是"漏洞被关进了多小的笼子"。我的延伸结论是:成熟的工程实践永远是"纵深防御"——Rust 写新代码 + 对关键 C++ 用 ASAN/MSAN 等运行时检测器 + 模糊测试(fuzzing)+ 静态分析,而不是迷信任何一种语言的银弹。
把这场战争翻译成你的实际决策,视频隐含的指南其实很清晰:
unsafe 的边界;老的 C 代码可以用 MISRA C + 形式化验证兜底。flowchart TD
CRISIS["🚨 内存安全危机<br/>70% 高危漏洞同根"] --> ROOT["根因:C/C++ 手动内存管理<br/>裸指针 + 手动分配释放"]
ROOT --> B1["use-after-free<br/>释放后使用"]
ROOT --> B2["buffer overflow<br/>缓冲区越界"]
ROOT --> B3["double-free<br/>二次释放"]
ROOT --> B4["null deref<br/>空指针解引用"]
CRISIS --> ROUTES["三条解法路线"]
ROUTES --> R1["路线A:运行时安全(GC)<br/>Java / Go / C# / Python"]
ROUTES --> R2["路线B:编译期安全<br/>Rust 所有权+借用+生命周期"]
ROUTES --> R3["路线C:渐进加固<br/>Safe C++ / C++26 safe buffers"]
R1 --> C1["安全 · 但有GC开销/延迟"]
R2 --> C2["零开销 · 但学习曲线陡"]
R3 --> C3["降低风险 · 难根除<br/>受困40年遗留与ABI"]
C2 --> END["🏁 2026 终局<br/>新代码→Rust · 旧代码→加固 · 长期共存"]
C3 --> END
R1 -.->|业务后端够用| END
对一线开发者,这支视频最大的价值不是站队,而是给你一个判断语言选型的底层框架。它揭示了一个被忽视的真相:内存安全不是一个语言特性,而是一种"安全债务"的管理策略。
如果你是技术负责人,看完该建立三件事:第一,对新增代码设硬性门槛——新模块能上 Rust 就上 Rust,把"安全默认开启"变成团队基础设施;第二,对存量 C++ 做债务分级,用 ASAN 跑 CI、对核心路径上 C++26 safe buffers 或智能指针,把"高危未加固代码"列成可追踪清单;第三,抛弃"语言宗教",理解 GC 语言、Rust、加固版 C++ 各自的税和适用边界,按场景而非信仰选型。
对学习者,最务实的路径是:先把 C/C++ 学扎实(理解指针、内存布局、为什么危险),再去学 Rust——你会发现 Rust 的所有权和借用检查器瞬间"对上了",因为你懂了它要解决的是什么。反过来只学 Rust 不懂底层,遇到 unsafe 就会抓瞎。这正是 2026 年最有价值的复合技能组合:C++ 的底层洞察 + Rust 的安全思维。谁同时握住这两把刀,谁就能在"遗留系统加固 + 安全新架构"这个未来十年最大的技术红利里吃到肉。
Rust 用"零开销编译期安全"第一次证明了性能不必以危险为代价,C++ 的安全补丁挡不住 Rust 攻入新代码,却足以让上百亿行遗产再战十年——这场战争的真正赢家,是被整体抬高了安全水位的所有开发者。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
