在堆或堆栈上分配的std :: queue的内存

时间:2019-05-22 17:23:06

标签: c++

如果我使用std::queue<ClassA> my_queue,那么为队列内的对象分配的内存在哪里?如果我不使用指针将对象存储在队列中,它是否还会在堆上分配?

2 个答案:

答案 0 :(得分:1)

如果未提供替代allocatorcontainer:免费商店,因为它使用std::deque

答案 1 :(得分:0)

所有标准容器都使用Allocator对象来满足其内存管理需求。默认情况下,除非您自己提供,否则它们将使用std::allocator。其中包括std::deque<T>所使用的std::queue<T>std::allocator使用免费存储空间(newdelete使用的存储空间),将在其中创建std::queue的元素。

std::deque以及使用动态分配对象的几乎所有其他标准类型,都使用其用户通常不可见的指针在内部管理该内存。这不是因为您没有动态分配对象,该对象不能出于自身目的在内部动态分配内存。