Re: [問題] 關於Loki::Singleton 的解構

看板C_and_CPP (C/C++)作者 (acer)時間16年前 (2009/07/12 01:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
※ 引述《yoco315 (眠月)》之銘言: : 不是 SmartPtr 的關係... : 沒道理容器不能放 SmartPtr... : 我懷疑是 VC 的 bug : 我看那個當掉的地方是 VC 在檢查 invalid delete 的碼 : 我猜是因為建構子沒東西 : VC 不知道做了什麼最佳化想要省掉東西 : 結果造成記憶體沒有 new : 但是還是進行了 delete 的動作 : 結果就 core dump 了 : 測試了一下 : 我在建構子裡面加上一些東西之後 : 行為就正常了.... : 然後我改用 gcc : 即使建構子裡面沒東西 : 程式也很正常的結束 :Q : 但是我依然不確定是不是這個問題 : 搞不好是真的不能用 SmartPtr... orz : 窘困,哪個大大來解答 qq 沒注意到yoco大有回文 現在才看到 囧 先回憶一下那時候遇到的狀況 class Obj { std::vector< Loki::SmartPtr<Obj> > cont; Obj(){} ~Obj(){ cerr<<"You kill me!!! Bastard!!!"<<endl; } public: void Add(){ cont.push_back(new Obj); } void Buggy(){ Loki::SmartPtr<Obj> cur = this; // 然後離開這個 scope 的時候就被解構了 QQ // 應該是直接用 this assign 的後果吧 // 所以其實跟 Singleton 沒啥關係 0rz } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.244.140.23
文章代碼(AID): #1AMCmLTq (C_and_CPP)
文章代碼(AID): #1AMCmLTq (C_and_CPP)