- 博客(11)
- 资源 (33)
- 论坛 (34)
- 收藏
- 关注
原创 boost库在工作(11)引用计数的智能指针weak_ptr
由于boost库里的shared_ptr采用引用计数的技术,这个技术天生就存在一个缺陷,就是不能存在循环引用的情况,因为这个缺点,引用计数的技术一直没有用到垃圾回收的算法里。既然存在这方面的问题,作为C++强大的boost库,一定会想办法解决的。因此,就提出另外一个智能指针weak_ptr。这个智能指针只对引用的指针进行保存,但不增加引用指针的计数,因而它不对shared_ptr的指针具有拥有权,
2013-02-24 21:35:53
3312
原创 boost库在工作(10)引用计数的智能指针shared_array
在共享指针里,有时也需要共享一个缓冲区,比如从网络收到数据,需要先放到缓冲区里,接着把这些数据发送给处理线程进行解包和处理。在这里就需要使用到两个线程里共享缓冲区的问题,因此比较好的解决方案,就采用引用计数的智能指针shared_array来解决,最为合适不过了。shared_array与shared_ptr具有相同的形式,使用和注意点也是相似的。具体的使用的例子如下:// boost_005.c
2013-02-22 21:52:56
3067
原创 boost库在工作(9)引用计数的智能指针shared_ptr之二
接着下来,需要演示一下怎么样在多个对象里共享一个对象,而不管每个对象的生命周期,就可以及时地把使用的对象在合适地方删除。下面的例子里先定义两个类,然后每个类都引用共享的对象,接着使用完成后,就会在析构函数里删除,可以从例子程序运行的输出结果看到内部运行的生命周期。有了共享智能指针,面对多个对象共享使用一个对象,这样的管理会方便很多。具体代码如下://在两个对象之间共享使用shared_ptr//
2013-02-19 20:34:23
3559
原创 boost库在工作(8)引用计数的智能指针shared_ptr之一
在前面已经介绍了三个智能指针,它们都是适合在局部作用域,不进行拷贝的情况下使用,最为合适,如果使用到其它情况,使用的好处跟坏处一样多,这种情况就不宜使用了。在目前多核处理器流行的今天,并发处理已经成为常事,因为多线程运行的高效性,界面操作人性化方面,都需要并发性处理。比如界面需要一直响应用户的操作,但后台的任务又需要有序地进行,只能阻塞在那里。这时,如果使用单线程,就显然人机操作界面不好了。在采用
2013-02-17 13:06:36
3182
原创 boost库在工作(7)使用数组智能指针scoped_array
学习过C++的开发人员,都知道在C++里数组指针与一般的指针是有区别的。比如使用数组形式分配的内存,就需要使用数组的形式删除。但初学开发的开发人员,往往会忘记这点,在我过去10多年的软件代码审查过程里,经常发现这点,如下面所示:char* pBuf = new char[256];......这里使用delete pBuf; 在最后这行代码上,就使用出错了。应该使用数组的形式删除,否则只删除了
2013-02-07 21:31:11
3994
2
原创 “坑爹的LIST容器--删除操作千倍消耗CPU”一文有误,在VC2010里是STL完胜
下面是STL的测试情况:every 3 seconds add/del element number is 40000stl list has 40000 elementsadd cost time too much: 109stl list has 0 elementsdelete cost time too much: 4992*********************************
2013-02-05 22:00:58
2762
5
原创 boost库在工作(6)作用域智能指针scoped_ptr之五
通过前面智能指针的学习,应了解到std::auto_ptr的使用和局限性,从而引发boost库针对这些情况提供了更多的智能指针,其中scoped_ptr就是针对std::auto_ptr的而提供的。对开发人员来说,代码限制得越精确,编译器发现尽可能多的错误,就是越好的方式。比如想要某个变量不能改变它的值,就需要常量限定符,这样就可以杜绝任何不小心对变量的操作。在普通的指针里,也常常使用const来
2013-02-05 20:58:58
2332
原创 boost库在工作(5)作用域智能指针scoped_ptr之四
第二种情况,主要就是使用在调用异常抛出的函数的地方。如下面的例子://异常抛出的函数,适合使用智能指针。//软件开发人员: 蔡军生 2013-02-03void ThrowFun(void){ if (1) { throw "Test Throw!"; } }void TestCallThrow(void){ std::auto_ptr nVal(new int);
2013-02-04 21:58:21
2270
1
原创 boost库在工作(4)作用域智能指针scoped_ptr之三
标准模板库里的智能指针std::auto_ptr,一般情况下,只适合在函数中使用,当离开这个函数时,就可以自动删除分配的资源。典型的情况有两种,一种是当一个函数代码比较多,判断条件很多,这样出口很多。另一种就是带有异常机制的代码,因为异常没有抛出来之前,没有办法确定那行代码会突然间就退出来,这种情况下对资源管理,会给软件开发人员带来很大的压力,即使很有经验的开发人员,也有点防不防的,会花大量的时间
2013-02-03 11:11:52
2225
原创 boost库在工作(3)作用域智能指针scoped_ptr之二
智能指针的原理,其实就是利用C++的一个特性,当对象创建时,一定会调用构造函数;当对象离开作用域时,会自动调用析构函数。由于这两个函数的调用都是由编译器来生成的,不用怕不调用的危险,达到安全删除的目的。当然,智能指针使用了一个对象的构造和析构,显示增加了一些开销,但比起垃圾回收机制来说,是非常小的,基本可以忽略不计。 既然智能指针已经有这么多优点,迫不及待了吧,怎么样使用呢?下面就先来看看std:
2013-02-02 23:42:16
2441
2
原创 boost库在工作(2)作用域智能指针scoped_ptr之一
很久远以前,丹尼斯.里奇发明了C语言,这个语言有一个优点,就是可以动态地分配内存。当需要使用内存时,就可以立即向系统申请。当不需要时,又可以立即释放回给系统,再给别的程序使用。这种动态的内存管理,使得当时以K计算的内存时代,也可以处理很大数据量的软件出现。但这中使用函数malloc来分配内存,使用函数free来释放内存的机制,一直到今天,还在使用。不过,这种方式有一个缺点,就是当你不断地使用函数m
2013-02-01 23:37:55
2738
python抓取天气并分析 实例源码
2017-08-28
国产8051模拟器
2016-09-10
python web py入门配套源代码
2018-02-23
milang 1.0.5
2014-08-03
milang 1.0.4
2014-07-13
milang 1.0.3
2014-06-07
Milang 1.0.2
2014-06-02
svm_hog_data.rar
2020-03-02
实现numpy的C++库扩展
2019-11-24
webpy演示例子1
2018-02-21
胶囊模型的代码
2018-02-02
书《深度学习》
2017-03-13
tinyxml2配套源码
2016-06-27
selenium的浏览器驱动
2016-06-14
caimouse的留言板
发表于 2020-01-02 最后回复 2020-05-14
开发大联盟,VC人员开放大聚会
发表于 2001-11-05 最后回复 2012-05-23
C++编译器源程序学习!!!!!!!!!!!!!!!!!1
发表于 2003-12-26 最后回复 2004-01-07
FastBT下载 1.0.3.66版 2003.12.25 放分 一小时结.
发表于 2003-12-26 最后回复 2003-12-26
发布最新版本FastBT 1.0.1.27 高兴放分
发表于 2003-11-21 最后回复 2003-12-10
有没有分析过传奇网络通迅?
发表于 2003-07-10 最后回复 2003-11-28
Visual Studio.net 2003 7cd 下载
发表于 2003-08-27 最后回复 2003-09-01
Visual Studio.net 2003 7cd 下载
发表于 2003-08-27 最后回复 2003-08-28
怎么样实现在资源管理器多一个盘号?
发表于 2003-07-24 最后回复 2003-07-31
深圳治安真差,我差点就被打死了!
发表于 2003-05-12 最后回复 2003-05-23
开放源码的P2P文件共享研究Gnucleus
发表于 2002-07-24 最后回复 2003-05-06
怎么样实现从播放器播放的声音录下来?
发表于 2003-03-11 最后回复 2003-03-19
QQ死机的BUG?不信你就试试了。
发表于 2003-02-20 最后回复 2003-02-26
大家把自己有的技能交流一下
发表于 2003-01-24 最后回复 2003-01-28
有不有程序员取这么好有GF啊?
发表于 2003-01-15 最后回复 2003-01-24
在C++BUILDER里怎么调试进入PASCAL?
发表于 2003-01-08 最后回复 2003-01-08
猜谜语送分
发表于 2003-01-07 最后回复 2003-01-07
操作系统源码分析网
发表于 2002-12-17 最后回复 2003-01-03
有人写过硬盘驱动程序吗?
发表于 2002-12-16 最后回复 2002-12-17
怎么样才能写出一个像TObject类CObject来?
发表于 2002-12-04 最后回复 2002-12-11
有空来我cbuilder论坛
发表于 2002-11-21 最后回复 2002-12-04
有空来我VC论坛
发表于 2002-11-25 最后回复 2002-11-26
开发DOS的操作系统,作为实时操作系统
发表于 2001-10-29 最后回复 2002-02-17
在局部网内用UDP通过代理服务器连接外面的人,怎么样用VC写通过代理呢?
发表于 2001-09-24 最后回复 2002-02-05
UDP 代理问题?
发表于 2002-01-24 最后回复 2002-01-24
怎么样设置像ICQ或OICQ这样服务器?
发表于 2001-12-29 最后回复 2001-12-29
我的钱哪去了?
发表于 2001-12-17 最后回复 2001-12-17
在VC中这个错误为什么出现的?
发表于 2001-11-30 最后回复 2001-12-13
谁能说出ICQ目录下各个DLL文件用处?给高分!!!!
发表于 2001-11-27 最后回复 2001-11-27
怎么样更新CLISTBOX
发表于 2001-11-14 最后回复 2001-11-14
谁有空就用C写个DOS操作系出来?XP可没有DOS啊
发表于 2001-10-26 最后回复 2001-11-13
为什么国内没有人写出像<<深入浅出MFC>>这样的好书
发表于 2001-11-08 最后回复 2001-11-08
用C++能写DOS操系统吗?
发表于 2001-10-31 最后回复 2001-10-31
我们能不能把NASM的使用手册译成中文吗
发表于 2001-10-30 最后回复 2001-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝