利用atexit實現單例模式自動析構 -开发者知识库

利用atexit實現單例模式自動析構 -开发者知识库,第1张

#include <stdio.h>
#include <stdlib.h>

class CSingleton
{
    public:
        static CSingleton* GetInstance()
        {
            if ( m_pInstance == NULL ) { //判斷是否第一次調用
                m_pInstance = new CSingleton();
                atexit(CSingleton::Release_CSingleton);
            }
            return m_pInstance;
        }

        static void Release_CSingleton()
        {
            if (m_pInstance != NULL) {
                delete m_pInstance;
                m_pInstance = NULL;
            }
        }

    private:
        CSingleton(){};
        static CSingleton *m_pInstance;
};
CSingleton* CSingleton::m_pInstance = NULL;

int main()
{
    CSingleton* p = CSingleton::GetInstance();
    return 0;
}

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复