gpt4 book ai didi

c++ - 在 C++ 中管理内存的理念是什么?

转载 作者:IT老高 更新时间:2023-10-28 22:16:08 27 4
gpt4 key购买 nike

在 C++ 中管理内存的设计因素是什么?例如:程序退出前没有释放内存对象,为什么会出现内存泄漏?一个好的编程语言设计难道不应该维护一个处理这种情况的“foo-table”吗?我知道我有点天真,但是 C++ 中关于类、结构、方法、接口(interface)、抽象类的内存管理设计理念是什么?

当然,人们不可能人道地记住 C++ 的每一个规范。内存管理的核心驱动设计是什么?

最佳答案

What is the core driving design of memory management ?

几乎在所有情况下,您都应该使用自动资源管理。基本上:

  • 在可行的情况下,最好创建具有​​自动存储持续时间的对象(即在堆栈上或函数本地)
  • 当您必须使用动态分配时,请使用范围绑定(bind)资源管理(SBRM;通常称为 Resource Acquisition is Initialization 或 RAII)。

您很少需要编写自己的 RAII 容器:C++ 标准库提供了一整套容器(例如,vectormap)和像 shared_ptr(来自 C++ TR1、C++0x 和 Boost)适用于大多数常见情况。

基本上,在真正优秀的 C++ 代码中,您永远不应该自己调用 delete1 来清理已分配的内存:内存管理和资源清理应该始终是封装在某种容器中。

1.显然,这里的异常(exception)是当您自己实现一个 RAII 容器时,因为该容器必须负责清理它拥有的任何东西。

关于c++ - 在 C++ 中管理内存的理念是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com