
🧩 一、核心哲学对比
| 维度 | C++ | Rust |
|---|---|---|
| 设计目标 | '零成本抽象' + 向后兼容 | '零成本安全' + 无畏并发 |
| 内存管理 | 手动(new/delete)或智能指针(unique_ptr) | 所有权系统(编译期自动回收) |
| 并发模型 | 共享可变状态(易出数据竞争) | 借用检查器禁止数据竞争(除非 unsafe) |
| 空指针 | nullptr 易导致崩溃 | Option<T> 消除空指针(类型级保障) |
| 未定义行为 | 大量存在(依赖程序员经验) | 几乎全部移至编译期拦截 |
💡 关键洞察: C++ 把安全交给程序员;Rust 把安全交给编译器。
🔐 二、内存安全实战对比
案例 1:悬垂指针(Dangling Pointer)
❌ C++(易错)
#include <iostream>
#include <memory>
std::unique_ptr<int> create() {
auto p = std::make_unique<int>(42);
return p; // OK: 移动语义
}
// 但若失误写成:
int* dangerous() {
x = ;
&x;
}




