看板 C_and_CPP 關於我們 聯絡資訊
大家好 我想問一下大家怎麼release singleton這個指標 是在release裡面寫 { delete 所有member 的指標 最後再 delete p_Singleton; } 這樣子嗎? 而我下面做了一個惡搞 http://nopaste.csie.org/63f22 我觀念是覺得 delete p_Singleton和 delete this;應該一樣阿? 確實delete後 都會觸發destructor 但是delete this好像沒看過有人這樣寫... 而且我設定NULL 後 才發現一件事 之前都聽到口頭說 this就是 ->的左值 還以為他們是ref關係 原來只是一份copy....結果也沒設成NULL.. delete this是很不好的寫法嗎? thx~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66
nowar100:this指著物件,包含著x 先delete [] x; 再delete p; 01/08 19:30
nowar100:這樣不會重覆delete嗎 囧 01/08 19:30
nowar100: delete this; ^^^^^ 01/08 19:31
nowar100:const_cast<A*>(this)=NULL; 把this指到NULL沒必要吧 01/08 19:34
QQ29:因為我一開始以為他其實就是 p_singleton的ref 01/08 20:06
QQ29:所以想指向null 還有版主說 重複delete??? 就算delete 01/08 20:06
QQ29:p_singleton 效果也一樣 不過感覺他只是還回去 sizeof(x) 01/08 20:07
littleshan:你仔細想為什麼 delete pointer 之後為什麼要設 NULL 01/08 20:07
QQ29:指標大小 為什麼說會重複呢? 01/08 20:07
littleshan:應該就可以了解 你完全不需要把 this 設為 NULL 01/08 20:07
QQ29:恩 我現在知道他們只是指向同一個位址的指標@@ 這樣說沒錯吧 01/08 20:08
nowar100:等等 這應該不會重複delete 剛剛看太快抱歉 01/08 20:32
xsoe:delete this; // block or access de.. 01/08 21:53