xxx

  C++一般不建议使用裸指针。很重要的原因是裸指针比较容易出问题,要么是忘了释放造成内存泄漏,要么是误用造成程序崩溃,等等。
  C++中用于解决这类问题的建议是,使用智能指针。

  智能指针,我的理解是,能够象指针一样工作的,并且能够自已维护指针的生命周期的类。标准库中,只收录了一种智能指针,auto_ptr。当然这是不够用的,因此,还有许多不同用途的智针被开发出来。我比较熟悉的智能指针实现有boost和loki。因此,我也只能说说这几种指针的用途,并且简单模仿一下。

  智能指针的基本用途都是一样的:
  1 象指针一样工作
  2 自动释放指针

  例如:

MyObject* p = new MyObject();
p
->doanything();
delete p; //必须调用delete p释放。
auto_ptr<MyObject> p = new MyObject();
p
->doanything();
//当p的作用域结束时,自动调用delete p释放。

  但是各种指针在不同的场合中,对于如何维护指针的生命周期(也就是何时、以及如何释放指针)有所区别。

posted @ 2006-04-01 09:40  沐枫  阅读(115)  评论(0)    收藏  举报