- 博客(10)
- 资源 (3)
- 收藏
- 关注
原创 C++中str1::function和bind
在C++的TR1中(TechnologyReport)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类的非静态成员函数时。可以参考Scott Meyers. >. Item 35.下面具体说明其使用方法。一、指向全局函数或静态成员函数时因为在本质上讲全局函数和静态成员函数没有区别,使用方法上除了静态成
2014-07-05 22:15:35 1944
原创 C++智能指针--unique_ptr
unique_ptr是一个独享所有权的智能指针,它提供了一种严格语义上的所有权,包括: 1、拥有它所指向的对象。 2、无法进行复制构造,也无法进行复制赋值操作。也就是说,我们无法得到指向同一个对象的两个unique_ptr。但是可以进行移动构造和移动赋值操作。 3、保存指向某个对象的指针,当它本身被删除释放的时候(比如,离开了某个作用域),会使用给定的删除器释放它指向
2014-07-05 22:14:00 1565
原创 C++智能指针--shared_ptr
shared_ptr是一个引用计数智能指针,用于共享对象的所有权。它可以从一个裸指针、另一个shared_ptr、一个auto_ptr、或者一个weak_ptr构造。还可以传递第二个参数给shared_ptr的构造函数,它被称为删除器(deleter)。删除器用于处理共享资源的释放,这对于管理那些不是用new分配也不是用delete释放的资源时非常有用。shared_ptr被创建后,就可以像普通指
2014-07-05 22:13:17 2671
原创 C++智能指针--weak_ptr
weak_ptr是对对象的一种弱引用,它不会增加对象的引用计数。weak_ptr和shared_ptr之间可以相互转换,shared_ptr可以直接赋值给week_ptr,week_ptr可通过调用lock函数来获得shared_ptr(如果对象已经被释放,则返回一个空的shared_ptr)。 单纯使用shared_ptr有时会产生问题,考虑下面的代码: 1 class
2014-07-05 22:12:35 2328
原创 C++智能指针--auto_ptr指针
这里先介绍auto_ptr的缺陷:因为auto_ptr并不是完美无缺的,它的确很方便,但也有缺陷,在使用时要注意避免。首先,不要将auto_ptr对象作为STL容器的元素。C++标准明确禁止这样做,否则可能会碰到不可预见的结果auto_ptr的另一个缺陷是将数组作为auto_ptr的参数: auto_ptr pstr (new char[12] ); //数组;为定义然后释放资源
2014-07-05 22:05:44 3021
原创 C++提供的四种新式转换--const_cast dynamic_cast reinterpret_cast static_cast
1、const_cast通常被用来将对象的常量刑转换,它也是唯一有此能力的C++-style转型操作符。2、dynamic_cast主要用来执行“安全向下转型”,也就是用来决定某对象是否归属继承体系中的某个实现。他是唯一无法由旧式语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。3、reinterpret_case意图执行低级转型,实际动作(及结果)可能取决于编译器,这也就表示它不可
2014-07-04 15:36:51 1330
转载 硬件内存的情况--内存就是RAM?
内存不全是RAM,让我们看看当今的Intel计算机是如何连接各个组件的吧。下图展示了主板上的主要组件:现代主板的示意图,北桥和南桥构成了芯片组。当你看图时,请牢记一个至关重要的事实:CPU一点也不知道它连接了什么东西。CPU仅仅通过一组针脚与外界交互,它并不关心外界到底有什么。可能是一个电脑主板,但也可能是烤面包机,网络路由器,植入脑内的设备,或CPU测试工作台。CPU主要通过3种方式
2014-07-04 11:42:40 2070
原创 内存管理--程序在内存中的分布
在多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中。这个沙盘就是虚拟地址空间(virtual address space)。1 32位虚拟内存布局在32位模式下虚拟地址空间总是一个4GB的内存地址块。这些虚拟地址通过页表(page table)映射到物理内存,页表由操作系统维护并被处理器引用。每一个进程拥有一套属于它自己的页表,但是还有一个隐情。只要虚拟地址被使用,那么它就会
2014-07-04 11:34:03 2710 1
原创 内核中内存分配--关于高端内存
Linux把物理内存划分为了三个管理区, 分别为0-16MB的ZONE_DMA, 16-896MB的ZONE_NORMAL和高于896MB的ZONE_HIGHMEM也就是高端内存.至于为什么这么划分, ZONE_DMA好理解, 因为ISA总线只能对前16MB进行DMA寻址, 这块要分出来不能乱用. 而ZONE_NORMAL和ZONE_HIGHMEM为什么从896MB区分呢? 这还得从物理地址和
2014-07-04 10:49:00 1389
转载 CPU和硬盘的性能相差多少!
本文以一个现代的、实际的个人电脑为对象,分析其中CPU(Intel Core 2 Duo 3.0GHz)以及各类子系统的运行速度——延迟和数据吞吐量。通过粗略的估算PC各个组件的相对运行速度,希望能给大家留下一个比较直观的印象。本文中的数据来自实际应用,而非理论最大值。时间的单位是纳秒(ns,十亿分之一秒),毫秒(ms,千分之一秒),和秒(s)。吞吐量的单位是兆字节(MB)和千兆字节(GB)。让我
2014-07-04 09:13:52 1269
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人