1. 在32位系统中定义变量最好用int,因为这样效率高。原因就在于32位的系统本身配合内存等也是32位,这样的硬件配置天生适合定义32位的int类型变量,效率最高。也能定义8位插入型和16位short型变量,但实际上访问效率不高。 2. 在很多32位系统中,我们实际定义了bool类型变量(实际上使 ...
分类:
其他好文 时间:
2017-06-09 15:10:46
阅读次数:
152
首先由一个程序引入话题: 程序的输出结果为: sizeof(st1) is 12 sizeof(st2) is 8 问题出来了,这两个一样的结构体,为什么sizeof的时候大小不一样呢? 本文的主要目的就是解释明白这一问题。 内存对齐,正是因为内存对齐的影响,导致结果不同。 对于大多数的程序员来说, ...
分类:
其他好文 时间:
2017-05-30 15:39:08
阅读次数:
218
一、什么是内存对齐 (1) 原理 a) 编译器按照成员列表的顺序给每个成员分配内存. b) 当成员需要满足正确的边界对齐时,成员之间用额外字节填充. c) 结构体的首地址必须满足结构体中边界要求最为严格的数据类型所要求的地址. d) 结构体的大小为其最宽基本类型的整数倍. (2) 程序设计 1 #i ...
分类:
其他好文 时间:
2017-05-12 11:43:53
阅读次数:
233
C++ 多态extern C字节对齐读写锁new 和 malloc的区别delete原理如何判断当前服务器是64位还是32位大端与小端的区别const 指针与引用的区别堆和栈的区别staticvolatile 这是工作5年多,再次被问及相关基础知识。回答的很不好。在此做详细的记录。 资料都来源于网上 ...
分类:
其他好文 时间:
2017-05-10 13:09:42
阅读次数:
129
计算机读取或者写入存储器地址时,一般以字(因系统而异,32位系统为4个字节)大小(N)的块来执行操作。数据对齐就是将数据存储区的首地址对齐字大小(N)的某个整数倍地址。为了对齐数据,有时需要在物理上相邻的两个数据之间保留或者插入一些无意义的字节。内存对齐本事编译器考虑是事情,但在C、C++语言中,可... ...
分类:
编程语言 时间:
2017-04-29 16:14:33
阅读次数:
175
这篇文章讲的非常好 : http://blog.csdn.net/hairetz/article/details/4084088 用空间换时间, 规则 : 每个数据成员存储的起始位置都要是它的整数被或者它子成员的整数倍, 并且结构体总长度是它内部最大成员的整数倍, 不足补齐. 可以使用 #pragm ...
分类:
编程语言 时间:
2017-04-15 13:30:50
阅读次数:
207
C++面向对象语言一大难点是继承,但又是不得不掌握的。简单的继承是很容易理解的,但是当涉及到多继承,设计到虚函数的继承,特别是涉及到虚继承时,问题就会变得复杂。下面的内容来自参考资料中的三篇文章。C++的继承学习中,最主要是要掌握派生类的对象模型,基类和派生类指针之间的向上向下类型转换,当继承中的出 ...
分类:
编程语言 时间:
2017-04-09 23:11:34
阅读次数:
1815
由下面的测试代码可以总结出两点:(1)内存对齐是针对结构体而言的 (2)编译时char类型的申请的空间由其后面的数据类型决定。 ...
分类:
编程语言 时间:
2017-04-09 18:23:34
阅读次数:
273
书中在继承之后内存对齐问题上说道下面代码: 并说输出应该为8 12 16,并说明了这样做的理由,当时我就觉得那个理由很奇怪,或者说没看懂书中所说的理由到底是什么,于是进行了测试,发现gcc编译器中输出的结果为8 8 8,说明确实bit2,bit3和bit1绑定在了一起,起码书中的说法在现在的gcc编 ...
分类:
编程语言 时间:
2017-03-29 19:13:02
阅读次数:
155
朱老师物联网大讲堂学习笔记 1、内存编址方法 内存在逻辑上是一个个格子,格子占有空间,可以用来存储数据,每个格子有编号,编号就是内存的地址,地址和格子空间是一一对应且永久绑定的。程序运行时,CPU只关心地址,不关心这个地址所代表的空间在哪里,怎么分布这些实体问题。有地址就一定能够找到对应的内存单元( ...
分类:
其他好文 时间:
2017-03-19 14:01:39
阅读次数:
241