C++11 中推出了三种智能指针,unique_ptr、shared_ptr 和 weak_ptr,
同时也将 auto_ptr 置为废弃
raw pointer 使用的缺陷
1. 容易忘记delete,造成内存泄漏
class HMI{
public:
HMI() : w(new Widget()){
}
~HMI()
{
// 忘记 delete w
}
private:
Widget* w;
};
如果因为一些原因,w 必须建立在堆上。如果用裸指针管理 w,那么需要在析构函数中 delete w; 这种写法虽然没什么问题,但是容易漏写 delete 语句,造成内存泄漏。
2. 容易因异常安全造成内存泄漏
void process<