您的位置:首页 > 编程语言 > C语言/C++

c++ standard library 学习笔记-auto_ptr<T> 注意事项

2012-02-19 22:21 656 查看
书上有 4 点,如下:

1.auto_ptrs 之间不能共享拥有权

这个很好理解,2 个 auto_ptrs 拥有同一个对象,如果在某个时间点其中之一将对象删除了,那么另一个自然就成为野指针了,此时再用它进行读写内存,后果就会很严重.

2.并不存在针对 array 而设计的 auto_ptrs

原因很简单,因为 auto_ptr 源码中使用 delete 而不是 delete [] 来释放所拥有对象的内存的.

3.auto_ptrs 绝非一个"四海通用"的智能指针

因为 auto_ptr 并非是一种基于引用计数技术的智能指针.

4.auto_ptrs 不满足 stl 容器对其元素的要求

这个也很好理解,因为对于这个不怎么好用的智能指针来说,她的 copy 和 assign 语义会使你觉得不习惯,因为这牵扯到一个拥有权转移的问题.所以,请不要把她作为标准容器的元素.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: