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

浙公网安备 33010602011771号