案例 有时候代码很长,很容易就忘了释放P。导致内存泄露,在程序结束后才会释放。 内存泄露的风险 如果代码需要的内存很大,前面的代码用完了new申请的内容不去释放,就会被一直占用着,后面可能不够用了造成程序崩溃。 解决方法 定义一个局部对象,放在test01函数中,在它的析构函数中释放P。 因此test01函数运行结束,将释放该对象,就释放了p #include <iostream> using namespace std;class person { public:person(int age){this->age = age;}int age;};class Smartpointer { public:Smartpointer(person *p1){this->p = p1;}person* p;// 重载该类的 -> 操作符person *operator->(){return p;}~Smartpointer(){delete p;cout<<"释放了p"<<endl;} };void test01() {person* p = new person(10000);Smartpointer sp(p);cout<<sp->age<<endl;// cout<<sp.p->age<<endl;// delete p; }int main() {test01();return 0; }