对字节对齐的理解
2011-01-05 13:48
225 查看
首先需要搞清楚“对齐”的概念(这是重点)
对齐:如果某成员位置到块开始之间的字节长度恰好为本成员长度的整数倍,则称本成员相对块开头对齐。 就像绳子的整数折一样。
1、根据对齐字节数(VC GCC默认为4字节)划出新块
2、将当前成员放到块中
3、处理下一个成员,根据本成员的长度找到本成员的对齐左边界,如果当前块还能放下本成员则执行2,否则执行1。
struct t
{
char t2;
short t3;
char t1;
char t4;
int t5;
}
main()
{
struct t t1;
int i;
memset(&t1, 0x0, sizeof(t1));
t1.t1=0x11;
t1.t2=0x22;
t1.t3=0x3333;
t1.t4=0x44;
t1.t5=0x55555555;
printf("/n%d", sizeof(struct t));
printf("/n");
for(i=0; i<sizeof(t1); i++)
{
printf("%02X ", ((char*)(&t1))[i]);
}
}
对齐:如果某成员位置到块开始之间的字节长度恰好为本成员长度的整数倍,则称本成员相对块开头对齐。 就像绳子的整数折一样。
1、根据对齐字节数(VC GCC默认为4字节)划出新块
2、将当前成员放到块中
3、处理下一个成员,根据本成员的长度找到本成员的对齐左边界,如果当前块还能放下本成员则执行2,否则执行1。
struct t
{
char t2;
short t3;
char t1;
char t4;
int t5;
}
main()
{
struct t t1;
int i;
memset(&t1, 0x0, sizeof(t1));
t1.t1=0x11;
t1.t2=0x22;
t1.t3=0x3333;
t1.t4=0x44;
t1.t5=0x55555555;
printf("/n%d", sizeof(struct t));
printf("/n");
for(i=0; i<sizeof(t1); i++)
{
printf("%02X ", ((char*)(&t1))[i]);
}
}
相关文章推荐
- 顶级c程序员之路 选学篇-1 深入理解字节,字节序与字节对齐
- 对字节对齐的理解 分类: 嵌入式开发学习 2014-02-13 08:45 233人阅读 评论(0) 收藏
- 关于字节对齐的理解
- 关于字节对齐的一些理解
- 对字节对齐的理解
- 字节对齐 理解
- 关于字节对齐的理解
- 对字节对齐的理解
- 计算机字节对齐的理解
- 关于字节对齐的理解程度
- 深入理解字节对齐
- C语言的内存的字节对齐的理解及其运用
- 惭愧,直到今天才对“数据类型字节对齐”有个深入的了解,对以前读书时学习的知识没有深刻理解啊 C/C++学习 C/C++学习 漫漫人生,澎湃的经历不断促使改变自己,永恒不变的是一颗骄傲的心!
- 字对齐、半字对齐、字节对齐的理解
- 关于C++字节对齐的分析与理解
- 快速理解字节对齐问题
- 关于字节对齐的理解
- 深入理解C语言字节对齐
- 结构体大小的计算及设置内存字节对齐数原理理解
- 字对齐、半字对齐、字节对齐的理解(转载)