91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 網絡安全 > 
  • 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

泾源县| 邹平县| 宝应县| 镇安县| 津市市| 晋江市| 盱眙县| 化隆| 静乐县| 长阳| 北流市| 讷河市| 广元市| 泰州市| 周口市| 隆昌县| 格尔木市| 浦城县| 贞丰县| 巍山| 武功县| 永胜县| 克拉玛依市| 溧水县| 调兵山市| 苏尼特右旗| 阆中市| 北海市| 莲花县| 共和县| 彭山县| 齐河县| 苏尼特左旗| 潜山县| 乌苏市| 和田市| 淮滨县| 金塔县| 天长市| 永昌县| 嵊泗县|