C++深度解析 智能指针分析 --- 重载指针特征操作符->和*(36)
智能指针解决内存泄漏的问题。
内存泄漏(臭名昭著的Bug)
- 动态申请堆空间,用完后不归还
- C++语言中没有垃圾回收的机制
- 指针无法控制所指堆空间的生命周期
示例程序:
#include <iostream>
#include <string>
using namespace std;
class Test
{
int i;
public:
Test(int i)
{
this->i = i;
}
int value()
{
return i;
}
~Test()
{
}
};
int main()
{
for(int i = 0; i < 5; i++)
{
//堆空间,不释放,会造成内存泄漏
Test* p = new Test(i);
cout << p->value() << endl;
}
return 0;
}
结果如下&#