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

Memory for std::queue allocated on heap or stack

本文关键字:std 队列 内存 分配 堆栈      更新时间:2023-10-16

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

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

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

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