C++
罗拙呓
简书博客地址:http://www.jianshu.com/u/14a4c5c3afc4
展开
-
类的大小——sizeof 的研究(1)
先看一个空的类占多少空间?class Base{public: Base(); ~Base();};注意到我这里显示声明了构造跟析构,但是sizeof(Base)的结果是1.因为一个空类也要实例化,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空类也会被实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化之后就有了独一无二的地址了。所以空转载 2015-08-11 20:16:36 · 679 阅读 · 0 评论 -
C++堆和栈的区别
堆和栈究竟有什么区别? 主要的区别由以下几点: 1. 管理方式不同 2. 空间大小不同; 3. 能否产生碎片不同; 4. 生长方向不同; 5. 分配方式不同; 6. 分配效率不同;管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。 空间大小:一般来讲在32位系统下,堆内存可以达到4G的空间,转载 2015-07-29 10:56:19 · 485 阅读 · 0 评论 -
5分钟搞定内存字节对齐
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧./********************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢? 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假转载 2015-08-11 20:46:56 · 1796 阅读 · 0 评论 -
C语言运算符优先级 之 快速记忆
先摘录谭浩强《C程序设计》对运算符优先级的两点说明:同一优先级的运算符,运算次序由结合方向来决定。例如:a) * 与 / 具有相同的优先级别,其结合方向为自左向右,因此3 * 5 / 4的运算次序是先乘后除;b) - 和 ++ 为同一优先级,结合方向为自右向左,因此 - i ++ 相当于 - ( i ++ )。从上述表中可以大致归纳出各类运算符优先级:初等运行符->单目运算符->算术运算符->关转载 2015-08-12 21:03:59 · 514 阅读 · 0 评论 -
32位和64位系统区别及int字节数
一)64位系统和32位有什么区别? 1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。什么是64位处理器?之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处转载 2015-08-02 22:15:05 · 4291 阅读 · 0 评论 -
剑指offer——反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。public class ReverseList { public static ListNode ReverseList(ListNode head) { if(head==null||head.next==null){ return head; } Lis原创 2015-09-03 23:20:38 · 451 阅读 · 0 评论