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 在范围内是全局的,因此不会被破坏。