為什么這段代碼會崩?容器中放的物件建構式new了記憶體空間,但自定義解構式釋放這個記憶體程式就崩,注釋掉這個自定義解構式就沒問題了,但這樣沒有記憶體泄露嗎?

uj5u.com熱心網友回復:
當執行:a.push_back(Object());此時生成臨時物件,呼叫了默認拷貝建構式,而由于默認拷貝建構式是淺拷貝,生成的臨時物件只是將指標拷貝過去了,導致臨時物件銷毀時故發生二次釋放記憶體,導致出錯。
uj5u.com熱心網友回復:
這個你要不自己重新定義拷貝建構式,要不禁止使用拷貝建構式,通常的做法是自己重新定義一個。uj5u.com熱心網友回復:
奔潰的原因樓上都解釋了還有那個 new int(4)是做啥呢?
確定不是要 new int [4] 嗎, 這兩個可不是一個意思
uj5u.com熱心網友回復:
C++11初始化的寫法,這個不是陣列uj5u.com熱心網友回復:
了解了多謝大神
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132816.html
標籤:C++ 語言
