Re: [問題] 關於Loki::Singleton 的解構
※ 引述《adxis (acer)》之銘言:
: // 完整(修正)
: #include <vector>
: #include "loki/Singleton.h"
: #include "loki/SmartPtr.h"
:
: class Obj{
: std::vector< Loki::SmartPtr<Obj> > innerCont;
: Obj(){}
: ~Obj(){}
: public:
: void Add(){
: Loki::SmartPtr<Obj> sp = new Obj;
: innerCont.push_back(sp);
: }
: };
: typedef Loki::SingletonHolder< Obj > SingletonObj;
: int main()
: {
: SingletonObj::Instance().Add();
SingletonObj::Destory();
記得這種玩法
必須要做這樣處理
沒有處理的話
在 VC++ 那邊的 _at_exit() 會作這類 global destory
而 crash 在這邊
另外我不清楚你的 SmartPtr 有沒有作 atomic inc/dec...
: return 0;
: }
另外這段
: void Buggy(){
: Loki::SmartPtr<Obj> cur = this;
cur.RefCount == 1
離開這個 scope 後 RefCount -1
RefCount == 0 時 砍掉 this
這是自殺行為
: // 然後離開這個 scope 的時候就被解構了 QQ
: // 應該是直接用 this assign 的後果吧
: // 所以其實跟 Singleton 沒啥關係 0rz
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.196.46
※ 編輯: wowtiger 來自: 114.42.196.46 (07/12 01:54)
→
07/12 02:13, , 1F
07/12 02:13, 1F
→
07/12 02:27, , 2F
07/12 02:27, 2F
→
07/12 02:31, , 3F
07/12 02:31, 3F
※ 編輯: wowtiger 來自: 114.42.196.46 (07/12 02:34)
→
07/12 02:51, , 4F
07/12 02:51, 4F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章