在“C和C ++中的安全编码”一书中,作者提到了三种不同的方法来管理项目中的字符串。
来电者分配,来电者自由(C99,OpenBSD,C11附件K)
Callee分配,来电释放(ISO / IEC TR 24731-2)
Callee分配,被调用者释放(C ++ std::basic_string
)
然后他提到," 第三种内存管理模式,其中被调用者分配和释放存储,是三种解决方案中最安全的,但只能在C ++中使用。& #34;
为什么第三种模式最安全?
答案 0 :(得分:4)
首先,第三种方法仅在C ++中可用的说法是无稽之谈 C和C ++都可以使用这三种方法。
关于“安全”部分,它取决于您正在做什么。如果您正在编写一个自包含的字符串类(例如。std::basic_string
),则第三种方法可能是最好的,因为该类完全自我管理它自己的内存。
依赖于main(或任何其他外部部件)中的内存分配/删除的字符串类是在使用字符串时忘记必要分配的邀请。 (=错误的概率很高)