Re: [問題] 關於Loki::Singleton 的解構
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 6 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章