use*_*427 1 c++ memory-management stl
通常当我使用非本地范围内的STL对象时,我存储指向我想要存储的数据的指针.例如
std::vector<MyStruct*>
Run Code Online (Sandbox Code Playgroud)
当我需要清理矢量时,我会通过并删除所有内容.我最近注意到这没有必要像我想的那样.无论出于何种原因,我认为STL类将数据存储在堆栈中,而我现在认为它在堆上分配它.它是否正确?将对象存储为指针以减少复制时间是唯一真正的好处吗?
标准容器通过Allocator对象分配内存,该对象的类型作为模板参数传递.如果你没有通过别的,那将是std::allocator<T>,将使用new分配内存.
底线:您可以强制他们以任何您想要的方式分配内存,但默认情况下它将来自免费商店.
如果你真的想要一个指针容器,那么容器将拥有指针对象(例如,当对象被销毁时会自动删除它们),你可能想要查看Boost Pointer Containers.