阿信@SYSU

求知若渴,求智若愚
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年4月26日

摘要: 内存分配方式 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静态存储区... 阅读全文

posted @ 2012-04-26 11:53 阿信@SYSU 阅读(964) 评论(0) 推荐(0)

2012年4月25日

摘要: 首先,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 因此,如果用sizeof运算符对一个类型名操作,那得到的是具有该类型实体的大小。 计算一个类对象的大小时的规律:空类、单一继承的空类、多重继承的空类所占空间大小为:1(字节,下同);一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的;因此一个对象的大小≥所有非静态成员大小的总和;当类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针vPtr指向虚函数表VTable;虚承继的情况:由于涉及到虚函数表和虚基表,会同时增加一个(多重虚继承下对应多个)... 阅读全文

posted @ 2012-04-25 17:39 阿信@SYSU 阅读(1534) 评论(0) 推荐(0)

2012年3月24日

摘要: 多态(Polymorphism)是面向对象程序设计(OOD)的一个重要特征之一(其它还包括继承和封装)。 多态字面意思就是“多种形态”。多态性是指允许将父对象设置成为它的一个或更多的子对象相等技术。简单地说,就是允许把子类类型的指针赋值给父类类型的指针,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(调用对应子类型的成员函数)。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。 虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针... 阅读全文

posted @ 2012-03-24 17:02 阿信@SYSU 阅读(442) 评论(0) 推荐(0)

2012年3月17日

摘要: int,long int,short int的宽度是随着编译器的情况而不同的。根据ANSI/ISO制订的的原则如下:1 sizeof(short int)<=sizeof(int)2 sizeof(int)<=sizeof(long int)3 short int至少应为16位(2字节)4 long int至少应为32位。编译器16位编译器32位编译器64位编译器char111char*(指针变量)248short int222int244long int448unsigned int244long long888float444double888unsigned long448u 阅读全文

posted @ 2012-03-17 01:06 阿信@SYSU 阅读(230) 评论(0) 推荐(0)

摘要: C/C++中的内存对齐(Memory Alignment)是件很有意思的事,现在分别介绍其产生的原因和具体规则,最后就是举例分析说明。产生的原因 为什么内存中需要对齐呢? 在CPU眼中,它把内存当成是一块一块的,块的大小可以是2,4,8,16字节大小,它在读取内存时也是一块一块进行读取的。同时不同的数据类型又是按照自己所占的字节数来进行存储的。 假设现在一个int型存储在0-3字节中,当CPU要读取这个int型的数据到寄存器中,就能一次过把这4个字节读到寄存器中。但是当该数据是从1字节开始存储的,问题变的有些复杂。CPU要先读取0—3字节的数据进寄存器,并再次读取4—7字节的数据进寄... 阅读全文

posted @ 2012-03-17 01:03 阿信@SYSU 阅读(223) 评论(0) 推荐(1)