1 #include <iostream>
2
3 class ProcessData
4 {
5 public:
6 ProcessData()
7 {
8 std::cout << "Construction" << std::endl;
9 }
10
11 ~ProcessData()
12 {
13 std::cout << "Destruction" << std::endl;
14 }
15 };
16
17 // case1:
18 // result: Construction Destruction
19 int main()
20 {
21 ProcessData* pProcessData = new ProcessData;
22
23 if(0 != pProcessData)
24 delete pProcessData, pProcessData = 0;
25 return 0;
26 }
27
28 // case2:
29 // result: Construction
30 // 不调用析构函数
31 int main()
32 {
33 ProcessData* pProcessData = new ProcessData;
34 void* pvProcessData = reinterpret_cast<void*>(pProcessData);
35 pProcessData = 0;
36
37 if(0 != pvProcessData)
38 delete pvProcessData, pvProcessData = 0;
39 if(0 != pProcessData)
40 delete pProcessData, pPorcessData = 0;
41
42 return 0;
43 }
44
45 // case3:
46 // result: Construction Destruction
47 // 仍然调用析构函数
48 int main()
49 {
50 ProcessData* pProcessData = new ProcessData;
51 void* pvProcessData = reinterpret_cast<void*>(pProcessData);;
52 pProcessData = 0;
53
54 pProcessData = reinterpret_cast<ProcessData*>(pvProcessData);
55 pvProcessData = 0;
56
57 if(0 != pProcessData)
58 delete pProcessData, pProcessData = 0;
59
60 return 0;
61 }