摘要:1.autor_ptr是简单智能指针,不允许转移所属关系。赋值,参数传递的时候会转移所有权,因此不要轻易进行此类操作,若进行此操作原auto_ptr失效,不会执行析构。 2.auto_ptr还有一个比较好的就是保证异常安全,在有异常抛出,提前结束函数块时也会保证析构。 3.赋值操作。利用已经... 阅读全文
(转)GCC/G++编译器和VS IDE中的一些预定义宏和用户自定义宏
2014-08-02 12:38 by 放作夥, 698 阅读, 0 推荐, 收藏, 编辑
摘要:预定义宏编译器通常会根据平台和编译选项的不同,为被编译的程序提供不同的预定义的宏,例如WIN32 WIN64 LINUX, 例如DEBUG, RELEASE.1. 在使用gcc/g++编译器时,可以通过以下命令打印出编译器预编译的宏。gcc -dM -E - < /dev/null2. 在VS ID... 阅读全文
Unix哲学
2014-07-19 13:14 by 放作夥, 312 阅读, 0 推荐, 收藏, 编辑
摘要:模块原则 (使用简洁的接口拼合简单的部件)计算机编程的本质就是控制复杂度要编写复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂的软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身。清晰原则 (清晰胜于技巧)维护... 阅读全文
面向过程和面向对象
2014-05-12 22:05 by 放作夥, 209 阅读, 0 推荐, 收藏, 编辑
摘要:面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游... 阅读全文
(转)public、protect、private继承方式 C++
2014-05-02 19:52 by 放作夥, 386 阅读, 0 推荐, 收藏, 编辑
摘要:C里面的结构体内的成员不受任何机制保护,直接能用,比如StructtypeA.x;StructtypeA.y;StructtypeA.fun();而c++则不同,c++的类像强化型的结构体public公有继承protected保护继承private私有继承我们知道类的private和protecte... 阅读全文
智能指针之auto_ptr
2014-04-23 13:25 by 放作夥, 255 阅读, 0 推荐, 收藏, 编辑
摘要:auto_ptr是C++标准库里的所谓智能指针之一。是用来防止内存泄漏的一种方式。它不允许多个指针指向同一块内存,而且能在方法返回时自动释放所指的内存。这样即使在程序因为异常退出时也能释放掉所占用的资源,不用造成内存泄漏。void f(){classA* ptr = new classA;try{.... 阅读全文
虚函数和纯虚函数的区别
2014-04-14 19:17 by 放作夥, 244 阅读, 0 推荐, 收藏, 编辑
摘要:(1)虚函数为了重载和多态的需要,在基类中是已经实现了的,即便是个空实现,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有实现的,必须在子类中加以实现,很像java中的接口函数!(2)虚函数是为了继承接口和默认行为纯虚函数只是继承接口,行为必须重新定义(3)在很多情况下,基类本身直... 阅读全文
linux下的计时器
2014-03-11 10:25 by 放作夥, 2838 阅读, 0 推荐, 收藏, 编辑
摘要:最近看排序算法的资料,想测一下各算法的运行时间才发觉没有查过计时器的资料,以前只听说过定时器。刚开始想到的是alarm信号,然后接收到信号时间量就加1,后来发现这是秒级的精度,根本达不到要求,搜了一下struct timeval能达到微秒级的计时精度#include #include #include int main() { struct timeval tv1,tv2; gettimeofday(&tv1,0);sleep(2); gettimeofday(&tv2,0); printf("tv2_sec-tv1_sec; %d\n",tv2.tv_se 阅读全文
Linux内存地址空间
2014-02-26 21:51 by 放作夥, 2101 阅读, 0 推荐, 收藏, 编辑
摘要:Linux虚拟内存的大小为2^32(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节(从虚地址0xC0000000到0xFFFFFFFF)供内核使用,称为“内核空间”。而较低的3G字节(从虚地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间”。因为每个进程可以通过系统调用进入内核,因此,Linux内核空间由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟地址空间(也叫虚拟内存)。 每个进程有各自的私有用户空间(0~3G),这个空间对系统中的其他进程是不可见的。最高的1GB内核空间则为所有进程以及内核所共享. 阅读全文
(转)详谈高端内存和低端内存
2014-02-16 17:35 by 放作夥, 4324 阅读, 0 推荐, 收藏, 编辑
摘要:一、高端内存和低端内存的划分Linux物理内存空间分为DMA内存区(DMAZone)、低端内存区(NormalZone)与高端内存区(HighmemZone)三部分。DMAZone通常很小,只有几十M,低端内存区与高端内存区的划分来源于Linux内核空间大小的限制。二、来源:过去,CPU的地址总线只有32位,32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间(232=4Gbit),在物理上理论上最多拥有4G内存(除了IO地址空间,实际内存容量小于4G),逻辑空间也只能描述4G的线性地址空间。为了合理的利用逻辑4G空间,Linux采用了3:1的策略,即内核占用1G的线性地址空间,用 阅读全文