一般来说,程序退出的时候,所有的资源都被回收,但是在使用检测内存泄露的工具比如valgrind时会被检测出来,可以理解为这是一种“假的内存泄漏”。为此,这里分别使用三种方法来避免这个问题。
方案一:嵌套类+静态对象
代码实现:
1 #include <iostream>
2 using std::cout;
3 using std::endl;
4
5 class Signalton
6 {
7 class AutoRelease
8 {
9 public:
10 AutoRelease()
11 {
12 cout<<"AutoRelease()"<<endl;
13 }
14
15 ~AutoRelease()
16 {
17 if(_pInstance)
18 {
19 delete _pInstance;
20 cout<<"~AutoRelease()"<<endl;
21 }
22 }
23 };
24 public:
25 static Signalton * getInstance()
26 {
27 if(_pInstance==nullptr)
28 {
29 _pInstance=new Signalton();
30 }
31 return _pInstance;
32 }
33
34 void destroy()
35 {
36 if(_pInstance)
37 delete _pInstance;
38 }
39
40 void print()const
41 {
42