C++中的内存对齐
来源:互联网 发布:人工智能股票有哪些股 编辑:程序博客网 时间:2024/06/05 14:54
在我们的程序中,数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。 1 #include <iostream> 2 using namespace std; 3 4 struct X1 5 { 6 int i;//4个字节 7 char c1;//1个字节 8 char c2;//1个字节 9 }; 10 11 struct X2 12 { 13 char c1;//1个字节 14 int i;//4个字节 15 char c2;//1个字节 16 }; 17 18 struct X3 19 { 20 char c1;//1个字节 21 char c2;//1个字节 22 int i;//4个字节 23 }; 24 int main() 25 { 26 cout<<"long "<<sizeof(long)<<"/n"; 27 cout<<"float "<<sizeof(float)<<"/n"; 28 cout<<"int "<<sizeof(int)<<"/n"; 29 cout<<"char "<<sizeof(char)<<"/n"; 30 31 X1 x1; 32 X2 x2; 33 X3 x3; 34 cout<<"x1 的大小 "<<sizeof(x1)<<"/n"; 35 cout<<"x2 的大小 "<<sizeof(x2)<<"/n"; 36 cout<<"x3 的大小 "<<sizeof(x3)<<"/n"; 37 return 0; 38 } 1 long 4 2 float 4 3 int 4 4 char 1 5 x1 的大小 8 6 x2 的大小 12 7 x3 的大小 8
让我们看看三个结构在内存中的布局:
X2中第一个类型是Char类型,它占用一个字节,所以它首先排在第一组块的第一个格子里面,第二个是Int类型,它占用4个字节,第一组块已经用掉一格,还剩3格,肯定是无法放下第二Int类型的,因为要考虑到对齐,所以不得不把它放到第二个组块,第三个类型是Char类型,跟第一个类似。所因为有内存分块对齐,我们的内存就不是8个格子了,而是12个了。 关于X3的说明其实跟X1是类似的,只不过它把两个1个字节的放到了前面,相信看了前面两种情况的说明这里也是很容易理解的。 |
- C中的内存对齐
- C中的内存对齐
- c中的内存对齐
- C/C++中的内存对齐
- c语言中的内存对齐
- C/C++中的内存对齐
- c语言中的内存对齐
- C语言中的内存对齐
- C/C++中的内存对齐
- c/c++ 中的内存对齐
- 浅谈C中的内存对齐
- C/C++中的内存对齐
- C语言中的内存对齐
- c语言中的内存对齐问题
- 浅谈C语言中的内存对齐
- C/C++中的结构体对齐问题(内存对齐)
- C/C++中的结构体对齐问题(内存对齐)
- C/C++中的结构体对齐问题(内存对齐)
- 基于linux2.6.16的nand驱动开发(三)
- C++运算符优先级
- CAS如何在服务器端的登陆成功页面获取登陆用户帐号的方法
- SOA 的基本概念及设计原则浅议
- MACD指数平滑异同移动平均线
- C++中的内存对齐
- SOA 案例研究:SOA 设计
- Delphi中的内存对齐 与 Packed关键字
- 帧中继的配置实例
- MYsql 安装后启动服务1067错误
- ARM7中断总结
- 硬盘的一些基础知识
- C#实现文件的压缩和解压缩
- sizeof运算符