在堆或堆栈上分配的 std::队列的内存
Memory for std::queue allocated on heap or stack
如果我使用std::queue<ClassA> my_queue
,队列内对象的内存在哪里分配?如果我不使用指针来存储队列中的对象,它是否仍会在堆上分配?
如果没有提供替代allocator
或container
:免费商店,因为它使用std::deque
所有标准容器都使用分配器对象来满足其内存管理需求。默认情况下,除非您提供自己的,否则它们使用std::allocator
.这包括std::deque<T>
,这是std::queue<T>
使用的。std::allocator
使用免费存储(new
和delete
使用的内存空间),这是创建std::queue
元素的位置。
std::deque
和几乎所有使用动态分配对象的其他标准类型都在内部管理该内存,使用通常对其用户不可见的指针。这并不是因为您没有动态分配对象,该对象无法在内部动态分配内存以实现其自身目的。
相关文章:
- 使用 std::forward_list 返回错误的队列实现
- 如何将 STL 队列推送函数绑定到 std::函数?
- C++ std::队列推送弹出两个不同的对象获取第一个对象
- 在堆或堆栈上分配的 std::队列的内存
- 是否使用示波器队列:: swap违反任何规则来清空std ::队列
- 包含std ::队列的类的价值限制
- 为什么STD ::队列使用STD :: Dequeue作为基础默认容器
- 为什么使用Swap()时STD ::队列不会释放内存
- 如何读取STD ::队列与另一个线程共享
- catlarray错误的STD ::队列
- 你能用lambda比较器交换std::队列吗
- std::队列析构函数慢得要命,错误
- std::队列初始化与 NULL
- 释放存储在std::队列中的堆指针
- 如果存在仅推送线程和仅弹出线程,那么C++std::队列安全吗
- 在MSVCC/g++/icc中,std队列/vector的行为不同
- 对std::队列的pop和push操作使用单独的互斥锁,而不是一个互斥锁
- 从std::队列推送结构和弹出时内存泄漏
- std::队列错误?Pop调用了错误的destroy函数
- 合并两个std::队列