(1)什么是智能指针:
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露(利用自动调用类的析构函数来释放内存)。
原理:智能指针类将一个计数器与类指向的对象相关联,通过计数来记录该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;调用析构函数时,构造函数减少引用计数(如果引用计数减至0,则删除基础对象)。
(2)为什么要用智能指针:
手动malloc/new出来的资源,容易忘记free/delete;中途抛出异常,无法释放资源。
(3)常见智能指针介绍:
C&