看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《freesamael (燒賣)》之銘言: : → steve1012:另外可以請教一下為什麼會delete兩次嗎? 12/25 11:04 : → steve1012:我只有寫一個destructor而已~ 12/25 11:04 default copy contructor 的作法是逐一呼叫 data member 的 copy constructor, 相當於產生一個如下的 copy constructor: HugeInteger(const HugeInteger &o): IntegerArr(o.IntegerArr), IntegerSize(o.IntegerSize) { } pointer 的複製是複製其值,所以兩個物件的 IntegerArr 會指向同一塊記憶體 +---------------------+ +----------------+ | compiler_added_temp | +------>|allocated_memory| |---------------------| | | | | IntegerArr +----------------+ | | | | | | | | | | | | +---------------------+ | | | | | | | | | | | | +---------------------+ | | | | temporary | | | | |---------------------| | +----------------+ | IntegerArr +----------------+ | | | | +---------------------+ temporary.~HugeInteger() 就會把這塊記憶體 delete 掉了, compiler_added_temp.~HugeInteger() 會再 delete 同一塊記憶體。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.29.121
steve1012:原來如此!!!!!!!!!!!! 12/25 22:31
steve1012:難怪第一篇回文有大大說我delete了不該delete的東西 12/25 22:31
steve1012:原來是這個意思 12/25 22:31