在 C 社区中,范式转变正在进行,令人鼓舞放弃传统的内存管理实践,如 new/delete、原始指针和 C 风格数组。随着 C 11 标准中智能指针和容器的出现,这些遗留方法通常被认为已经过时。
智能指针或标准容器可以替换新/删除吗?
除了实现智能指针或容器之外,是否存在无法进行 new/delete 的用例被替换?
是的,在某些边缘情况下 new/delete 会提供特定的优势:
原始 C 风格数组与 std::array
当 std::array 提供时是否需要原始 C 风格数组类似的功能?
在极少数情况下,C 样式数组可能仍然是首选:
与第三方中的原始指针交互库
我们如何处理第三方库返回的原始指针,确保正确的资源释放?
我们可以将这些指针包装在智能指针中,如果需要的话指定自定义删除器函数考虑到图书馆的遗留资源发布 API。
情景相关性
需要注意的是,这些用例都是极端情况,在日常编程中很少遇到。出于实用目的,现代 C 内存管理工具提供了卓越的安全性和便利性。
结论
而 new/delete、原始指针和 C 风格数组具有历史意义,它们在当代 C 中的使用通常是不鼓励的。智能指针和容器为内存管理提供了健壮且可维护的替代方案,确保代码安全性和可读性。
以上是现代 C 中什么时候仍然需要 `new`/`delete`、原始指针和 C 风格数组?的详细内容。更多信息请关注PHP中文网其他相关文章!