Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1735773
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类: C/C++

2013-01-31 17:23:20

原文地址:智能指针与动态内存 作者:jexpo

这一章相对第四版是新增的,主讲动态内存与智能指针,再次推荐了使用智能指针与各种容器来“操作”内存,避免直接和new打交道。

1. shared_ptr,从boost那里过来的,内存保留与引用计数,多个对象可共享同一内存(上的对象),简单想一个IP数据包就明白了。

强调慎重使用那个get()接口,避免误释放。

2. unique_ptr,基本要取代老的那个auto_ptr,每一个该对象专享其指向的东东,唯一性。

3. weak_ptr,配合shared_ptr使用的,重点是weak(弱),不会增加shared_ptr指向对象的引用计数,用的时候多判断一下。

4. 堆区上申请出来的数组不能用range-for循环,不知道循环计数是多少,主意是说new返回的那个指针没有通常数组的性质。后面又说堆区数组可以用大括号 list initializing的方式初始化,但不能用小括号的方式。

	int *p1 = new int[3](0,1,2);
	int *p2 = new int[3]{0,1,2};

	typedef int ary[3];
	int *p3 = new ary;
	delete [] p3;
第一行是编不过的 :  error: ISO C++ forbids initialization in array new
下面的typedef ary后,再用new 出来的ary指针,释放时要用delete [],因为本质是多片内存的申请,effective c++里好像见过。

阅读(546) | 评论(0) | 转发(0) |
0

上一篇:Linux 下使用USB 网络

下一篇:linux route 命令

给主人留下些什么吧!~~