亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

盐源县| 桑植县| 江陵县| 大荔县| 芮城县| 牡丹江市| 土默特右旗| 庆安县| 开原市| 伊宁市| 南和县| 南部县| 七台河市| 乌拉特后旗| 图木舒克市| 安陆市| 津南区| 梁平县| 樟树市| 深圳市| 雅江县| 静安区| 海宁市| 衡东县| 大足县| 定结县| 新竹市| 黎城县| 巴彦淖尔市| 高淳县| 图们市| 常熟市| 丰镇市| 云南省| 宣城市| 大洼县| 广河县| 古丈县| 兴化市| 越西县| 扎鲁特旗|