首页 >后端开发 >C++ >现代 C 中什么时候仍然需要 `new`/`delete`、原始指针和 C 风格数组?

现代 C 中什么时候仍然需要 `new`/`delete`、原始指针和 C 风格数组?

Susan Sarandon
Susan Sarandon原创
2024-12-18 01:58:09167浏览

When Are `new`/`delete`, Raw Pointers, and C-Style Arrays Still Necessary in Modern C  ?

在现代 C 中,是否需要 new/delete、原始指针或 C 风格数组?

在 C 社区中,范式转变正在进行,令人鼓舞放弃传统的内存管理实践,如 new/delete、原始指针和 C 风格数组。随着 C 11 标准中智能指针和容器的出现,这些遗留方法通常被认为已经过时。

智能指针或标准容器可以替换新/删除吗?

除了实现智能指针或容器之外,是否存在无法进行 new/delete 的用例被替换?

是的,在某些边缘情况下 new/delete 会提供特定的优势:

  • 非本地所有权:如果指针的所有权不应该被替换本地化到指针本身,如在某些数据结构中,如链接列表或

原始 C 风格数组与 std::array

当 std::array 提供时是否需要原始 C 风格数组类似的功能?

在极少数情况下,C 样式数组可能仍然是首选:

  • 第三方库集成:如果第三方库返回用 new 分配的原始指针,则用智能指针包装它们可能不可行。

与第三方中的原始指针交互库

我们如何处理第三方库返回的原始指针,确保正确的资源释放?

我们可以将这些指针包装在智能指针中,如果需要的话指定自定义删除器函数考虑到图书馆的遗留资源发布 API。

情景相关性

需要注意的是,这些用例都是极端情况,在日常编程中很少遇到。出于实用目的,现代 C 内存管理工具提供了卓越的安全性和便利性。

结论

而 new/delete、原始指针和 C 风格数组具有历史意义,它们在当代 C 中的使用通常是不鼓励的。智能指针和容器为内存管理提供了健壮且可维护的替代方案,确保代码安全性和可读性。

以上是现代 C 中什么时候仍然需要 `new`/`delete`、原始指针和 C 风格数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn