C++提供了std::auto_ptr,即“智能指针”,是个“类指针(pointer-like)对象”,其析构函数自动对其所指对象调用delete,因此auto_ptr充当资源管理者的角色,属于管理对象,而且用被管理对象进行初始化。
如果多个auto_ptr同时指向同一对象,对象会被删除一次以上,会出现“未定义行为”。为了预防这个问题,auto_ptr有一个不寻常的性质:若通过拷贝构造函数或赋值运算符复制他们,他们会变成null,而复制所得的指针将取得资源的唯一拥有权。
auto_ptr的替代方案是“引用计数型智慧指针(RCSP)”,RCSP也是个智能指针,持续追踪共有多少对象指向某笔资源,并在无人指向它时自动删除资源。
TR1的std::tr1::shared_ptr就是个RCSP,TR1表示Technical Report 1。