C++开发时,需要自己去回收创建的资源,但是由开发者自己去回收的时候,很有可能会造成资源泄露,为了避免该情况,所以专门用对象来管理资源。
具体的方案是根据智能指针原理,对象初始化时智能指针获取该对象,引用计数初始化为一,当对象被复制或赋值时引用计数加一,析构函数执行时引用计数减一,当最后引用计数为零时会自动delete对象。C++另外也提供了相应的share_ptr、auto_ptr智能指针。
请记住
-
为防止资源泄露,请使用RAII(Resource Acquisition Is Initialization)对象,它们在构造函数中获得资源并在析构函数中释放资源。
-
两个常被使用的RAII classes分别是tr1::shared_ptr和auto_ptr。前者通常是较佳选择,因为其copy行为比较直观。若选择auto_ptr,复制动作会使它(被复制物)指向null。