2017-04-07 28 views
0

我想在函數err_fun中,當離開err_fun()時,堆棧em會自由,所以em的內容會在同一時間自由釋放,爲什麼 我仍然可以在棧函數的主函數中得到正確的答案。C++ std :: stack內容在離開函數時不會自由

感謝。

#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; 
} 
+0

是'em'會被銷燬,但'st'不會。他們是獨立的。 – songyuanyao

回答

1

因爲這是你的要求爲你這麼做的時候swapem內容將被複制。由於st在全球範圍內是不會被破壞的。

+0

我認爲swap方法只是移動內容指針。交換方法是否總是將整個內容複製到目標內容?像複製em的內容到st的內容。 –

+0

我鏈接到文檔,它進入了非常具體的細節。如果你想知道更多,那就是要去的地方。 – tadman

相關問題