当我将元素弹出队列时,它会被释放吗?

时间:2019-04-03 03:49:48

标签: c++ queue pop

我宁愿在调用pop和push时记忆如何工作?

1 个答案:

答案 0 :(得分:1)

该元素已删除并销毁。如果您拥有对先前包含的元素的引用(或指针),则该元素将变得悬而未决。

std::queue<int> bad {{1, 2, 3}};
const int &first = bad.front();
bad.pop();
// first is invalid at this point

基础容器可能会也可能不会将未使用的内存释放回操作系统。容器通常会保留先前分配的内存,以备快速使用。参见Why doesn't std::queue shrink its memory after popping elements?