被叫方分配被叫方释放

callee allocates callee frees

本文关键字:释放 方释放 方分配 分配      更新时间:2023-10-16

在"C 和C++中的安全编码"一书中,作者提到了跨项目的三种不同方法来管理字符串。

    调用者
  1. 分配,调用者释放(C99,OpenBSD,C11 Annex K)

  2. 被叫方分配,来电方释放 (ISO/IEC TR 24731-2)

  3. 叫方分配,被叫方释放 (C++ std::basic_string

然后他提到,"第三种内存管理模式,即被调用方分配和释放存储,是三种解决方案中最安全的,但仅在C++可用。

为什么第三种模式最安全?

首先,第三种方法仅在C++中可用的说法是无稽之谈。
这三种方法在 C 和 C++ 中都是可能的。

关于"安全"部分,这取决于你在做什么。如果您正在编写一个自包含的字符串类(例如。 std::basic_string),第三种方法可能是最好的,因为类完全自我管理自己的记忆。

依赖于主部分(或任何其他外部部分)中的内存分配/删除的字符串类是使用字符串时忘记必要分配的邀请。(=错误的可能性很高)