注意:现在boot库已经归入STL库,用法基本上还和boost类似
在C++11中,引入了智能指针。主要有:unique_ptr, shared_ptr, weak_ptr。
这3种指针组件就是采用了boost里的智能指针方案。很多有用过boost智能指针的朋友,很容易地就能发现它们之间的关间:
std
boost
功能说明
uniq...
分类:
编程语言 时间:
2016-02-19 14:28:33
阅读次数:
2677
我们先来解释一下什么叫智能指针?
智能指针是利用RAII(在对象的构造函数中执行资源的获取(指针的初始化),在析构函数中释放(delete 指针):这种技法把它称之为RAII(Resource Acquisition Is Initialization:资源获取即初始化))来管理资源。
其本质思想是:将堆对象的生存期用栈对象(智能指针)来管理。也就是当new一个堆对象的时候,立刻用智能指针来接...
分类:
其他好文 时间:
2016-01-30 13:57:03
阅读次数:
207
5.2 Smart Pointer(智能指针)shared_ptr的aliasing构造函数,接受一个shared pointer和一个raw pointer。它允许你掌握一个事实:某对象拥有另一个对象。例如:struct X{ int a;};shared_ptr px(new X);sh...
分类:
编程语言 时间:
2016-01-04 18:14:41
阅读次数:
158
很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生成健壮的代码。本文阐述了如何正确运用auto_ptr来让你的代码更加安全——以及如何避免对auto_ptr危险但常见的误用,这些误用...
分类:
其他好文 时间:
2015-12-16 18:52:06
阅读次数:
162
1、shared_ptr:一种计数指针,被指向的对象在引用计数为0时删除。它表示共享的所有权(负责对象的删除销毁)。需要包含,下同。// 定义删除器struct Deleter{public: void operator() (Base *p) { cout p1(n...
分类:
编程语言 时间:
2015-12-06 01:47:46
阅读次数:
208
条款18 让接口容易被正确使用,不易被误用记住:★“促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容★“阻止误用”的办法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任(即类的设计者应先发制人)。★tr1::shared_ptr支持定制型删除器。这可防范DLL问...
分类:
其他好文 时间:
2015-11-05 10:34:36
阅读次数:
179
教研室的项目,就是用Qt做个图形界面能收发数据就可以了,但是创建数据管理类的时候需要各种new, delete,很小心了但是内存使用量在不断开关程序之后函数会长,由于用的是gcc 4.7.* 所以好像没有shared_ptr可以用,上网查了一下原来QT也有智能指针。常用的有 QScopedPoint...
分类:
其他好文 时间:
2015-10-15 18:26:17
阅读次数:
402
一、动态内存与智能指针 1、new:在动态内存中为对象分配空间并返回一个指向该对象的指针;delete:接受一个动态对象的指针,销毁该对象,并释放与之关联的内存 2、两种指针:shared_ptr和unique_ptr;还有一个weak_ptr;都定义在memory中 二、shared_ptr类:智...
分类:
其他好文 时间:
2015-10-11 19:38:46
阅读次数:
232
1. 智能指针(如标准库的auto_ptr,shared_ptr,weak_ptr,boost的scoped_ptr等)主要用于动态内存的管理,同时提供给用户与内置指针一样的使用方法,本条款主要涉及智能指针在构造与析构,复制和赋值,解引等方面的注意点,而非智能指针的实现细节.2. 智能指针的构造,赋...
分类:
编程语言 时间:
2015-10-06 23:38:32
阅读次数:
391
先可考虑下下面这个语句:1 int prioriy();2 processWidget(shared_ptr(new Widget), priority());上面这条语句看似比较正常,不会泄露资源,但是实际上并非如此。调用上面这个语句的时候基本上分成三步:1. new Widget2. 根据Wid...
分类:
其他好文 时间:
2015-10-06 19:35:20
阅读次数:
199