c++ std::stack 离开函数时内容不会被释放
c++ std::stack content will not be free when leaving function
我觉得在函数err_fun中,离开err_fun()时栈em会被释放,所以em的内容也会同时被释放,为什么
我仍然可以在 main 函数中使用 stack st 得到正确答案?
谢谢。
#include <stack>
stack<int> st;
void err_fun() {
stack<int> em;
st.swap( em );
}
int main() {
err_fun();
//... some operation with stack st.
return 0;
}
em
的内容将被复制过来,因为这是您在 swap
时要求的内容。由于 st
在范围内是全局的,因此不会被破坏。
我觉得在函数err_fun中,离开err_fun()时栈em会被释放,所以em的内容也会同时被释放,为什么 我仍然可以在 main 函数中使用 stack st 得到正确答案?
谢谢。
#include <stack>
stack<int> st;
void err_fun() {
stack<int> em;
st.swap( em );
}
int main() {
err_fun();
//... some operation with stack st.
return 0;
}
em
的内容将被复制过来,因为这是您在 swap
时要求的内容。由于 st
在范围内是全局的,因此不会被破坏。