队列堆或栈
Queue heap or stack
队列分配在栈上还是堆上?我想在函数内部使用队列:
void lee()
{
queue<int>Q;
//stuff
}
我想知道我是否需要做:
queue<int>().swap(Q);
在函数结束时释放 memory.If 队列在堆栈上,然后我不必释放它,因为它会在函数 ends.If 时被释放有什么不对请告诉我,我还是个初学者。
std::queue
和所有其他 STL 容器遵循 RAII 并在超出范围后自行清理。 std::queue
的成员分配在堆栈上,但它们可能包含指向堆分配内存的指针,当对象超出范围时(在本例中为函数结束),这些内存将被释放。请注意,如果您像这样对未命名的 std::queue
进行操作:std::queue<int>().some_method()
,则 std::queue
在语句末尾超出范围。
队列分配在栈上还是堆上?我想在函数内部使用队列:
void lee()
{
queue<int>Q;
//stuff
}
我想知道我是否需要做:
queue<int>().swap(Q);
在函数结束时释放 memory.If 队列在堆栈上,然后我不必释放它,因为它会在函数 ends.If 时被释放有什么不对请告诉我,我还是个初学者。
std::queue
和所有其他 STL 容器遵循 RAII 并在超出范围后自行清理。 std::queue
的成员分配在堆栈上,但它们可能包含指向堆分配内存的指针,当对象超出范围时(在本例中为函数结束),这些内存将被释放。请注意,如果您像这样对未命名的 std::queue
进行操作:std::queue<int>().some_method()
,则 std::queue
在语句末尾超出范围。