C++ 智能指针
flyfish 2015-3-1
使用原始指针进行显示内存管理在性能上有优势,但容易出错。诸如 野指针,重复释放,内容泄露等。
C++为了在编程语言上支持更好的内存管理机制,C++98提供了auto_ptr,因为auto_ptr的缺点在C++11中被废弃,C++11提供了
unique_ptr,shared_ptr,weak_ptr等智能指针在自动回收堆分配的内存,智能指...
分类:
编程语言 时间:
2015-03-01 17:09:47
阅读次数:
253
智能指针是一种具备指针类似行为的对象,当不在需要它的时候自动删除其引用的c++对象。直接点说就是自动析构C++对象。boost提供了6种智能指针,如下所示:scoped_ptr单个对象的简单的唯一所有权. 不能拷贝.scoped_array数组对象的唯一所有权. 不能拷贝.shared_ptr多个指...
分类:
其他好文 时间:
2015-02-27 14:58:45
阅读次数:
125
boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include #include #include class implementation{public: ~impleme...
分类:
其他好文 时间:
2015-02-27 13:21:50
阅读次数:
181
C++拾遗--智能指针
前言
内存泄露是常见的问题,新标准中的智能指针从根本上解决了这个问题。所谓的智能指针,其智能性体现在:当没有对象使用某块动态分配的内存时,那就自动释放这片内存。
智能指针
下面这段程序可耗尽内存,导致程序崩溃。...
分类:
编程语言 时间:
2015-02-19 20:47:03
阅读次数:
240
由于非常习惯用const来加强代码的封装性,结果最近遇到了一些问题,顺带研究了一下以前基本没用过boost的智能指针,后来进了新项目组,引擎里遇到了大量boost的shared_ptr,intrusive_ptr指针,还有weak_ptr。因为遇到过更好用的weak_ptr,所以boost::wea...
分类:
其他好文 时间:
2015-02-15 11:54:40
阅读次数:
314
1. shared_ptr是要程序管理的对象,这个对象管理了它引用的另一个对象2. shared_ptr销毁的时候,把它引用的对象的引用数减一,这个是强引用3. weak_ptr可以认为是普通指针,它不管理它引用的对象的内存左边的小方块是智能指针对象,右边P对象拥有一个引用C的智能指针,C要能P销毁...
分类:
其他好文 时间:
2015-02-10 15:13:42
阅读次数:
138
http://www.cnblogs.com/tianfang/archive/2008/09/15/1291050.htmlboost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#inc...
分类:
其他好文 时间:
2015-02-02 19:29:02
阅读次数:
241
boost.smart_ptr库提供了六种智能指针:scoped_ptr、scoped_array、shared_ptr、shared_array、week_ptr和intrusive_ptr。
说到智能指针,我们会想到c++98标准中的自动指针auto_ptr.auto_ptr获取指针所有权后,离开作用域时自动释放该指针指向的堆内存。也可以转移指针的所有权。
auto_ptr ap_a1(new...
分类:
其他好文 时间:
2015-01-30 21:08:29
阅读次数:
364
shared_ptr与scoped_ptr都包装在堆上分配的动态对象,都重载了*和->操作符以模仿原始指针行为,但shared_ptr实现的是引用计数型的智能指针,当没有代码使用时计数为0,此时释放被包装的动态分配的内存。shared_ptr可以被自由地拷贝和赋值。shared_ptr可以安全地放到标准容器中。引用《boost程序库完全开发指南》中的话:“shared_ptr非常有价值、非常重要、...
分类:
其他好文 时间:
2015-01-30 21:06:47
阅读次数:
248
std::auto_ptr很多的时候并不能满足我们的要求,比如auto_ptr不能用作STL容器的元素。boost的smart_ptr中提供了4种智能指针和2种智能指针数组来作为std::auto_ptr的补充。
shared_ptr:使用shared_ptr进行对象的生存期自动管理,使得分享资源所有权变得有效且安全.
weak_ptr:weak_ptr 是 shared_ptr 的观察员...
分类:
其他好文 时间:
2015-01-29 09:22:31
阅读次数:
288