如果我使用std::queue<ClassA> my_queue
,那么为队列内的对象分配的内存在哪里?如果我不使用指针将对象存储在队列中,它是否还会在堆上分配?
答案 0 :(得分:1)
如果未提供替代allocator
或container
:免费商店,因为它使用std::deque
答案 1 :(得分:0)
所有标准容器都使用Allocator对象来满足其内存管理需求。默认情况下,除非您自己提供,否则它们将使用std::allocator
。其中包括std::deque<T>
所使用的std::queue<T>
。 std::allocator
使用免费存储空间(new
和delete
使用的存储空间),将在其中创建std::queue
的元素。
std::deque
以及使用动态分配对象的几乎所有其他标准类型,都使用其用户通常不可见的指针在内部管理该内存。这不是因为您没有动态分配对象,该对象不能出于自身目的在内部动态分配内存。