以前在项目中使用单例模式时,喜欢使用静态指针实现,但是需要在程序结束时释放指针的内容,不然会造成内存泄漏,代码如下:
Log& Log::instance() { if(NULL == ms_log) { static Log ms_log = new Log("./log.txt"); if(!ms_log->m_logout.good()) { std::cout << "log file "./log.txt"" << std::endl; } } return *ms_log; }
今天发现可以使用静态对象来避免这个问题:
Log& Log::instance() { static Log slog("./log.txt"); if(!slog.m_logout.good()) { std::cout << "log file "./log.txt"" << std::endl; } return slog; }
一切伟大的思想和行动都有一个微不足道的开始。