由于C++使用指针时,会有可能由于程序员的原因产生内存泄露的问题。例如下面一段程序:
#include <iostream>
class A
{
public:
A()
{
std::cout<<"A()"<<std::endl;
}
~A()
{
std::cout<<"~A()"<<std::endl;
}
};
由于上面的问题,导致产生了内存泄露的问题,所以引用了智能指针,它能够帮助我们管理内存泄露的问题,使程序员不必手动delete。智能指针简单的运用如下一段程序所示:int main(){// A a;//这里不会产生内存泄露
A *p = new A();//这里只会调用构造函数,不会调用析构函数,会产生内存泄露的问题。需要加一行delete p;return 0;}
#include <iostream>
#include <memory>
class A
{
public:
A()
{
std::cout<<"A()"<<std::endl;
}
~A()
{
std::cout<<"~A()"<<std::endl;
}
inline void print()
{
std::cout<<"print()"<<std::endl;
}
};
int main(){// A a;
// A *p = new A();
std::auto_ptr<A> autoPtr(new A);//这里会调用构造和析构函数
}