码迷,mamicode.com
首页 > 其他好文 > 详细

关于结构体的大小

时间:2014-09-11 23:47:12      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   数据   div   sp   代码   log   c   

第一步是要知道结构体大小的计算方式:

    结构体大小等于最后一个成员的偏移量加上最后一个成员的大小,

    偏移量指的是结构体变量中成员的地址 – 结构体变量地址的差, 第一个成员的偏移量为0

 

下面代码

TRecord2 = record
    a: Integer;
    b: Integer;
    c: Integer;
  end;

 {$A8+}
 TRecord1 = record
    a1: Byte;
    a2: Integer;
    a3: Int64;
    a4: Byte;
    a5: Word;
    case Integer of
      0: (e1: TRecord2);
      1: (e2: Int64);
  end;

直接用数据说话吧:

下面是每个成品的偏移量

a1:0, a2:4, a3:8, a4:16, a5:18, e1:24, e2:24, size:40

 

其实可以画一个格子<下面每个格子代表对齐的字节数>

a1, a2 a3 a4,a5 e1 e1      

因为对齐都是2的倍数,所以a5是18而不是17.

 

还有一种比较特殊的

TRecSingle = record
  a1: Byte;
end;

 

这种大小是1

关于结构体的大小

标签:style   blog   color   数据   div   sp   代码   log   c   

原文地址:http://www.cnblogs.com/DKSoft/p/3967427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!