Effective c++ 条款13:以对象管理资源

所谓资源就是,一旦用了他,将来必须还给系统。比如内存,互斥锁、图形界面中的字型和笔刷、数据库连接以及网络socket等。

1、资源取得时机便是初始化时机

RAII, Resource Acquisition Is Initialization

2、为确保资源总是被释放,需要将资源放进对象内

将资源放进对象内,当控制流离开某个申请资源的函数时,该对象的析构函数会自动释放那些资源。
获得资源后立刻放进管理对象内。
管理对象运用析构函数确保资源被释放。
标准数据库提供的auto_ptr正是针对这种形势而设计的特制产品。由于auto_ptr被销毁时会自动删除它所指之物,所以一定要注意别让多个auto_ptr指向同一对象。
auto_ptr的替代方案是“引用计数型智能指针”shared_ptr,其持续追踪共有多少对象指向某笔资源,并在无人指向它时自动删除该资源。
关于现有的智能指针的好处和劣处网上的资料比较多,建议更深入了解。

猜你喜欢

转载自blog.csdn.net/unirrrrr/article/details/81177310