C++中可能出现的内存错误大致有这么几个方面:
1,缓冲区溢出
2,空悬指针/野指针
3,重复释放
4,内存泄露
5,不匹配的new和delete
6,内存碎片
正确地使用智能指针可以有效地解决前5个问题
1:缓冲区溢出:std::vector<char>/std::string或者自己编写的buffer class来管理,自动记住用缓冲区的长度,并通过成员函数而不是裸指针来修改
2:野指针:用share_ptr/weak_ptr
3:重复引用:scoped_ptr
4:内存泄露:scoped_ptr
5:不匹配的new和delete吧new佟佟换为std::vector/scoped_array
shared_ptr<T>是一个类模板,它只有一个类型参数,用起来很方便,引用计数的资源管理,当计数为0时,对象被销毁weak_ptr也是一个引用计数的智能指针