结构体内数据元素对齐
来源:互联网 发布:淘宝色情服务暗语 编辑:程序博客网 时间:2024/05/16 17:39
默认情况下,为方便结构体内元素的访问于管理,当结构体内的数据元素的长度小于处理器的位数的时候,便以结构体内的最长数据元素为对齐单位,即结构体的长度一定为最长数据元素的长度的整数倍。如果结构体内存在长度大于处理器位数的数据元素,则处理器的位数为对齐单位。
如:
#include <stdio.h>
struct
{
float a;
int b;
char c;
}node;
int main()
{
int p=sizeof(node);
printf("%d \n",p);
return 0;
}
#include <stdio.h>
struct
{
char b
char c;
}node;
int main()
{
int p=sizeof(node);
printf("%d \n",p);
return 0;
}
但是同样是对齐,不同的编译器的对齐还是有所差距,对于如下代码:
int mian()
{
int a;
char b;
int c;
printf("0x%08x ",&a);
printf("0x%08x ",&b);
printf("0x%08x ",&c);
return 0;
}
利用vc编译后结果:
0x0012ff7c
0x0012ff7b
0x0012ff80
即 b(1字节) a(4字节) c(4字节)共9字节
而Dev C++和LCC编译后的结果均为:
c(4字节)中间相隔3字节 b(1字节)a(4字节)共12字节
由此可知vc编译器要“聪明”一些。- 结构体内数据元素对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内在对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- 结构体内存对齐
- Unix 环境高级编程-读书笔记
- 正则表示式
- 1将一个字符串数组输出为|分割的形式
- 收到了家外企的offer letter
- LVS软件四层负载
- 结构体内数据元素对齐
- C语言关键字--- enum typedef
- ROS链接openni库获取kinect数据(PC端)
- STL源码学习----lower_bound和upper_bound算法
- Android@id和@+id区别?
- git 命令的使用(二)
- 解决 Ubuntu 下风扇一直高速旋转的方法
- linux内核映像uImage与zImage的区别
- Linux下,不能以根用户身份运行google chrome 浏览器的解决办法