字节对齐

转载 2015年07月08日 22:55:30


1 字节对齐的原则:每个字段的起始偏移地址必须是该字段的倍数,并且总的大小必须是最大的字段的size的倍数。

字符串数组是按一个个byte来算的。

typedef struct
{
 unsigned short id;
 unsigned short data_size;
 char         data[506];
 unsigned short verify_code;
} verify_data_t;

所以sizeof(verify_data_t) = 2 + 2 + 506 + 2 = 512

typedef struct
{
 char buf_head[6];
 char x1[1];
 char name[11];
 char x2[1];
 verify_data_t verify_data;
 char x3[1];
 char tail[4];
} full_data_t;----538

sizeof(full_data_t) = 6 + 1 + 11 + 1(19) + 1(as next field is unsigned short id 2 bytes, offset should be 2*multi) + 512 + 1 + 4 + 1(total length should be 2*multi) = 538.


2 字节对齐的缘由: 是cpu访问数据的效率问题,决定了字节对齐的必要性。

如果一个整型变量float字节的地址是0x00000004,那ok,读取一次就获取到了。而如果地址是0x00000002,那么就要读取两次

0x00000002-0x00000003(2个字节),然后再去2个字节(0x00000004-0x00000005)。

字节对齐与结构体大小

  • 2015年03月11日 12:53
  • 26KB
  • 下载

字节对齐与结构体大小

  • 2013年05月06日 13:17
  • 97KB
  • 下载

struct 字节对齐详解与大小端模式

一.什么是字节对齐,为什么要对齐?     现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地...

语言:内存字节对齐详解

  • 2010年05月25日 01:24
  • 21KB
  • 下载

C语言字节对齐

  • 2012年08月08日 22:35
  • 245KB
  • 下载

【c++进阶】结构体的字节对齐问题

要求数据内存的起始地址的值是某个数k的倍数,这就是所谓的内存对齐,本文就来深入剖析C++中的struct结构体字节对齐,需要的朋友可以参考下1.什么是字节对齐,为什么要对齐?现代计算机中内存空间都是按...

字节对齐详解.pdf

  • 2011年07月05日 09:14
  • 2.33MB
  • 下载

字节对齐小结

  • 2013年10月14日 14:11
  • 64KB
  • 下载

关于C++内存中字节对齐问题的详细介绍

转载:http://www.jb51.net/article/36903.htm 一、什么是字节对齐 计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字节对齐
举报原因:
原因补充:

(最多只允许输入30个字)