【问题标题】:Queue heap or stack队列堆或栈
【发布时间】:2021-03-17 11:20:20
【问题描述】:

队列是分配在栈上还是堆上?我想在函数中使用队列:

void lee()
{
  queue<int>Q;
  //stuff
}

我想知道我是否需要这样做:

queue<int>().swap(Q);

在函数结束时释放内存。如果队列在堆栈上,那么我不必释放它,因为它会在函数结束时被释放。如果我有什么问题请告诉我知道,我还是个初学者。

【问题讨论】:

    标签: c++ arrays pointers vector queue


    【解决方案1】:

    std::queue 和所有其他 STL 容器跟随RAII 并在它们超出范围后自行清理。 std::queue 的成员是在堆栈上分配的,但它们可能包含指向堆分配内存的指针,当对象超出范围时(在本例中为函数结束),这些内存将被释放。请注意,如果您像这样对未命名的 std::queue 进行操作:std::queue&lt;int&gt;().some_method(),则 std::queue 在语句末尾超出范围。

    【讨论】:

    • 哦,所以如果我在函数内部使用向量/堆栈/队列,它们将在函数结束时被释放?我正在使用交换技巧来释放队列,因为这是我在互联网。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2013-03-21
    • 2014-07-21
    相关资源
    最近更新 更多