(1)、为防止资源泄漏,请使用RAII对象,它们在构造函数中得到资源并在析构函数中释放资源c++
(2)、使用智能指针。shared_ptr、auto_ptr安全
(1)、复制RAII对象必须一并复制它所管理的资源(内存、文件、锁),因此资源的coping行为取决于RAII对象的copying行为;函数
(2)、广泛常见的RAII class copying行为是:禁止复制(继承Uncopyable)、采用引用计数法(shared_ptr),或者其余方法。spa
(1)、资源管理类中应该提供访问其原始资源的接口;指针
(2)、显式转换(提供函数,如shared_ptr的get),隐式转换(重写operator)。通常显式比较安全,但隐式转换比较方便。对象
(1)、new-->deleteblog
(2)、new[]-->delete[]继承
(1)、在单独的语句内以智能指针存储newed所得的对象,避免抛出异常时,形成难以察觉的资源泄漏。接口
void processWidget(shared_ptr<Widget> pw, int priority); processWidget(new Widget, priority);//error shared_ptr的构造函数是explicit processWidget(shared_ptr<Widget>(new Widget), priority()); //error c++处理参数的次序不固定,并不是从右到左。 shared_ptr<Widget> pw(new Widget); processWidget(pw, priority()); //ok