Delphi的结构体内存对齐

阅读: 评论:0

肯定句
Delphi结构体内存对齐
delphi为例:
TTest = record
c1: char;
i1: Integer;
c2: char;
c3: Char;
end;
这个结构如果用sizeof取其占用的内存大小,是多少呢,是1+4+1+1=7么,不是,是4*3 = 12; 这是因为32编译的时候,默认结构会自动内存对齐(32bit = 4byte)
如果要想让这个结构占用7个字节的话,必须加上packed关键字。如下:
TTest = packed record
c1: char;
i1: Integer;
c2: char;
c3: Char;
卷盘end;乌龙学院
c中也有类似的语法,如
#define ATTRIBUTE_PACKED __attribute__((packed))
typedef struct {希伯来神话
...
} ATTRIBUTE_PACKED record_t;
__attribute__ ((packed)); 是说取消结构在编译过程中的优化对齐。
__attribute__ ((aligned (64))); 是说让dummy成员对齐在64-bit自然边界上。
再附两种情况增加理解
TTest = record
c1: char;
i1: Integer;
end;
//占用四川省西昌市8字节
TTest = record
c1: char;
i1: Integer;
c2: char;
end;
运载火箭//占用12字节
TTest = record
c1: char;
end;
//占用1字节

本文发布于:2023-08-15 06:21:18,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/361349.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结构   编译   默认   过程   理解
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图