第6章 内存安全的挑战

—— 汝之C++,尚循千禧故技

C++ 在安全性方面确实存在一些固有挑战,其中内存安全尤为突出。内存安全问题通常可分为两大类:空间安全问题(例如访问越界的内存)和时间安全问题(例如访问状态不确定或已被释放的内存)。为了应对这些问题,现代 C++ 提供了一系列改进措施,例如避免使用裸指针(naked pointers)、引入 std::span 以提供更安全的数组访问方式,以及利用 concepts 来加强类型安全和接口约束。

然而,这些机制仍有局限,尚未形成一套完整的安全保障体系。本章将展示当前 C++ 内存安全机制的不足之处,并探讨“安全规范”(safety profiles)作为未来可能的改进方向。

本章将涵盖以下主题:

  • 内存安全的重要性
  • 传统C++的内存安全问题
  • 现代 C++ 提供的安全增强机制与解决方案
  • 现代 C++ 方案的局限性与潜在缺陷
  • 尚需进一步改进的方向与可能性