测试环境:win7, vs2012如果未安装boost,请参考:http://blog.csdn.net/alex_my/article/details/17630685涉及智能指针:shared_ptr, weak_ptr, scoped_ptr, auto_ptr其它:enable_shared...
分类:
编程语言 时间:
2014-07-19 14:15:45
阅读次数:
276
/**
* 功能:使用标准库:文本查询程序
* 时间:2014年7月10日09:10:15
* 作者:cutter_point
*/
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
using line_no=vector::size_type;
/**...
分类:
编程语言 时间:
2014-07-11 00:16:17
阅读次数:
305
shared_ptr::operator->返回的是T*类型指针,非const T*指针。因此通过const shared_ptr&类型的ptr可以直接调用T各个原始的方法,不用担心const与非const问题。具体shared_ptr::operator->实现如下,摘自boost1.52.0版本...
分类:
其他好文 时间:
2014-07-09 23:34:42
阅读次数:
194
动态内存与智能指针(3)
/**
* 功能:动态内存与智能指针
* 时间:2014年7月8日15:33:58
* 作者:cutter_point
*/
#include
#include
#include
#include
using namespace std;
/**
智能指针和异常
*/
void f()
{
shared_ptr sp(new int(42)); ...
分类:
编程语言 时间:
2014-07-09 09:08:04
阅读次数:
161
1、定义shared_ptr的作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除。这在非环形数据结构中防止资源泄露很有帮助。aut...
分类:
编程语言 时间:
2014-07-09 00:36:15
阅读次数:
250
weak_ptr是对对象的一种弱引用,它不会增加对象的引用计数。weak_ptr和shared_ptr之间可以相互转换,shared_ptr可以直接赋值给week_ptr,week_ptr可通过调用lock函数来获得shared_ptr(如果对象已经被释放,则返回一个空的shared_ptr)。
单纯使用shared_ptr有时会产生问题,考虑下面的代码:
1 class...
分类:
编程语言 时间:
2014-07-08 17:10:39
阅读次数:
289
动态内存与智能指针(2)
直接管理内存
void fun1()
{
//此new表达式在自由空间构造一个int型对象,并返回指向该对象的指针
int *pi1=new int; //pi指向一个动态分配、未初始化的无名对象
string *ps3=new string; //初始化为空string
int *pi2=new int; ...
分类:
编程语言 时间:
2014-07-08 15:51:21
阅读次数:
269
shared_ptr是一个引用计数智能指针,用于共享对象的所有权。它可以从一个裸指针、另一个shared_ptr、一个auto_ptr、或者一个weak_ptr构造。还可以传递第二个参数给shared_ptr的构造函数,它被称为删除器(deleter)。删除器用于处理共享资源的释放,这对于管理那些不是用new分配也不是用delete释放的资源时非常有用。shared_ptr被创建后,就可以像普通指...
分类:
编程语言 时间:
2014-07-08 13:26:57
阅读次数:
191
一、智能指针
tr1::shared_ptr和tr1::weak_ptr。前者的作用有如内置指针,但会记录有多少个tr::shared_ptrs共同指向同一个对象,这便是所谓的引用计数。一旦最后一个这样的指针被销毁,也就是一旦某一个对象的引用计数为0,这个对象会被自动删除。这在非环形数据结构中防止资源泄露很有帮助,但如果两个或多个对象内含tr1::shared_ptrs并形成环状,...
分类:
其他好文 时间:
2014-07-06 11:43:58
阅读次数:
186