中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 網絡安全 > 
  • c++設計模式之單例模式下的實例自動銷毀(垃圾自動回收器)

c++設計模式之單例模式下的實例自動銷毀(垃圾自動回收器)

發布時間:2020-04-27 02:45:18 來源:網絡 閱讀:425 作者:26度出太陽 欄目:網絡安全

    

關于C++單例模式下m_pinstance指向空間銷毀問題,m_pInstance的手動銷毀經常是一個頭痛的問題,內存和資源泄露也是屢見不鮮,能否有一個方法,讓實例自動釋放。

解決方法就是定義一個內部垃圾回收類,并且在Singleton中定義一個此類的靜態成員。程序結束時,系統會自動析構此靜態成員,此時,在此類的析構函數中析構Singleton實例,就可以實現m_pInstance的自動釋放。

附上測試代碼

c++設計模式之單例模式下的實例自動銷毀(垃圾自動回收器)

 1 #include <iostream> 2 using namespace std; 3  4 class Singleton 5 { 6 public: 7     static Singleton *GetInstance() 8     { 9         if (m_Instance == NULL)10         {11             m_Instance = new Singleton();12             cout<<"get Singleton instance success"<<endl;13         }14         return m_Instance;15     }16 17 private:18     Singleton(){cout<<"Singleton construction"<<endl;}19     static Singleton *m_Instance;20 21     // This is important22     class GC // 垃圾回收類23     {24     public:25         GC()26         {27             cout<<"GC construction"<<endl;28         }29         ~GC()30         {31             cout<<"GC destruction"<<endl;32             // We can destory all the resouce here, eg:db connector, file handle and so on33             if (m_Instance != NULL)34             {35                 delete m_Instance;36                 m_Instance = NULL;37                 cout<<"Singleton destruction"<<endl;38                 system("pause");//不暫停程序會自動退出,看不清輸出信息39             }40         }41     };42     static GC gc;  //垃圾回收類的靜態成員43 44 };45 46 Singleton *Singleton::m_Instance = NULL;47 Singleton::GC Singleton::gc; //類的靜態成員需要類外部初始化,這一點很重要,否則程序運行連GC的構造都不會進入,何談自動析構48 int main(int argc, char *argv[])49 {50     Singleton *singletonObj = Singleton::GetInstance();51     return 0;52 }

c++設計模式之單例模式下的實例自動銷毀(垃圾自動回收器)


運行結果:

c++設計模式之單例模式下的實例自動銷毀(垃圾自動回收器)

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泸水县| 碌曲县| 西藏| 合作市| 竹北市| 乐陵市| 海阳市| 平遥县| 子长县| 池州市| 新和县| 临武县| 鲜城| 青岛市| 加查县| 通辽市| 蒙自县| 大埔区| 宣武区| 临沭县| 莱州市| 光山县| 伽师县| 涿州市| 大港区| 宜兰县| 西城区| 陕西省| 新兴县| 郑州市| 无极县| 潼关县| 临海市| 乌拉特后旗| 横山县| 新郑市| 敖汉旗| 肇庆市| 瓦房店市| 湘潭县| 涞源县|