gpt4 book ai didi

C++ STL 内存管理 : Stack or Heap?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:51 26 4
gpt4 key购买 nike

通常,当我使用非本地范围内的 STL 对象时,我会存储指向我想要存储的数据的指针。例如

std::vector<MyStruct*> 

当需要清理 vector 时,我会遍历并删除所有内容。我最近注意到这没有必要,就像我想的那样。无论出于何种原因,我认为 STL 类将数据存储在堆栈上,而我现在认为它是在堆上分配数据。它是否正确?将对象存储为指针以减少复制时间的唯一真正好处是什么?

最佳答案

标准容器通过 Allocator 对象分配内存,其类型作为模板参数传递。如果你没有传递任何其他东西,那就是 std::allocator<T> ,这将使用 new分配内存。

底线:您可以强制他们几乎以任何您想要的方式分配内存,但默认情况下它将来自免费存储。

如果您真的想要一个指针容器,容器将拥有指针对象(例如,当对象被销毁时将自动删除它们),您可能需要查看 Boost Pointer Containers .

关于C++ STL 内存管理 : Stack or Heap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11699956/

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