September 6th Thursday (九月 六日 木曜日)

原创 2007年10月14日 13:29:00
  The auto_ptr is an example of a smart pointer, an object that acts like a pointer, but with additional features.
The auto_ptr class is defined so that, in most respects, it acts like a regular pointer. For example, given that ps
is an auto_ptr, you can dereference it (*ps), increment it (++ps), use it to access structure members (ps->puffIndex),
and assign it to a regular pointer that points to the same type.

  The auto_ptr is not a panacea. For example, consider the following code:

auto_ptr<int> pi(new int [200]);   // NO!

  Remember, you must pair delete with new and delete [] with new []. The auto_ptr template uses delete, not delete [],
so it only can be used with new, not new []. There is no auto_ptr equivalent for use with dynamic arrays. You could copy
the auto_ptr template from the memory header file, rename it auto_arr_ptr, and convert the copy to use delete [] instead
of delete. In that case, you would want to add support for the [] operator.

  What about this?

string vacation("I wandered lonely as a cloud.");
auto_ptr<string> pvac(&vacation);  // NO!

  This would apply the delete operator to non-heap memory, which is wrong.

Caution:  Use an auto_ptr object only for memory allocated by new, not for memory allocated by new[] or by simply declaring
a variable.

  Now consider assignment:

auto_ptr<string> ps (new string("I reigned lonely as a cloud."));
auto_ptr<string> vocation;
vocation = ps;

  What should the assignment statement accomplish? If ps and vocation were ordinary pointers, the result would be two pointers
pointing to the same string object. That is not acceptable here, for then the program would wind up attempting to delete the same
object twice, once when ps expires, and once when vocation expires. There are ways to avoid this problem:

  Define the assignment operator so that it makes a deep copy. This results in two pointers pointing to two distinct objects,
one of which is a copy of the other.

  Institute the concept of ownership, with only one smart pointer allowed to own a particular object. Only if the smart pointer
owns the object will its constructor delete the object. Then have assignment transfer ownership. This is the strategy used for
auto_ptr.

  Create an even smarter pointer that keeps track of how many smart pointers refer to a particular object. This is called
reference counting. Assignment, for example, would increase the count by one, and the expiration of a pointer would decrease
the count by one. Only when the final pointer expires would delete be invoked.

  The same strategies, of course, would also be applied to the copy constructors.
 

周一学易01:深层次剖析甲木命人

2015-08-24  大道至简6...  文章来源  阅 1060  转 23 转藏到我的图书馆 微信分享: 今天开始的《周一学易》是比较深层次的...
  • jimlong
  • jimlong
  • 2016年11月18日 16:26
  • 1475

关于“参商两曜斗西东”中“参商”和“两曜”具体指什么

“ 牛女二星河左右,参商两曜斗西东”,参商和两曜分别指的什么?
  • hellfire2007
  • hellfire2007
  • 2016年10月11日 16:23
  • 8675

WP 4 i春秋_百度杯”CTF比赛(九月第一场)

CODECODE打开页面后,看到一张图片,且链接为如下形式:http://528c1f8ff4fe439482ce4069e858e805ad9172679385471a.ctf.game/index...
  • segOt
  • segOt
  • 2017年04月22日 13:20
  • 607

流体分离技术:木糖生产工艺及浓缩技术

膜浓缩过程也会产生一定的热量,浓缩同时可使木糖离交液的温度升高,可降低下一步浓缩升温所带来的蒸汽消耗。...
  • u0136000012
  • u0136000012
  • 2015年03月12日 15:59
  • 372

传统IDC转型有了新思路 ZStack除了混合云还有托管云

近日,ZStack宣布与阿里云在混合云领域达成战略合作。ZStack COO尤永康在接受中国IDC圈专访时表示,ZStack可以为传统IDC提供一种转型新思路,即ZStack 在托管云上的实践。 ...
  • V_WOD123
  • V_WOD123
  • 2017年12月20日 11:32
  • 3190

树状数组:CDOJ1583-曜酱的心意(树状数组心得)

曜酱的心意Time Limit: 3000/1000MS (Java/Others) Memory Limit: 131072/131072KB (Java/Others) Descripti...
  • yopilipala
  • yopilipala
  • 2017年07月25日 19:37
  • 165

周六研易01:深入研究甲木选用法

今天的《周六研易》是《周日说易》和《周一学易》的后续篇,是为对四柱有特别兴趣的网友准备的。由浅入深到研究,让你全方位知道自己是什么命,并从中了解相关本命的一系列十分有用的技能,帮你知道自己把握自己...
  • jimlong
  • jimlong
  • 2016年11月18日 16:28
  • 1031

优秀开源项目YYKit

YYModel 类似 Mantle/JSONModel 的工具,性能比 Mantle 高一个数量级,有更好的容错性,更简洁的 API。 YYCache 类似 TMCache 那样的工具,有着更好的性能...
  • jueyi1127
  • jueyi1127
  • 2016年03月22日 11:18
  • 3492

百度杯CTF比赛二月第三场比赛(Reverse专题赛)之CrackMe-1

本文转载自百度杯CTF比赛二月第三场比赛(Reverse专题赛)之CrackMe-1 题目下载 查下壳,没加壳。 载入ollydbg,寻找字符串。 跟着核心函数。 用IDA Pr...
  • qq_32400847
  • qq_32400847
  • 2017年03月30日 12:13
  • 891

水木租房、二手、购房简易爬虫

准备租房,对于中介提供的房子,大部分不满意,还不如去水木自己看看。于是写了一个小爬虫,帮我自动筛选出下列小区的出租信息。Python也没学过,一边百度一边拼凑出来的,见笑。...
  • maray
  • maray
  • 2016年11月14日 19:37
  • 1601
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:September 6th Thursday (九月 六日 木曜日)
举报原因:
原因补充:

(最多只允许输入30个字)