C++ 内存对齐问题

排山和倒海 排山和倒海 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
struct P1{
int a;
char b;
int c;
char d;
};
struct P2{
struct P1 a[2];
struct P1 * b;
};

这个代码的P2的结构体的sizeof的大小是36,也就是说P2结构体的对齐的字长是4个字节
但是,我个人记得struct结构体的字长根据最大的结构体元素进行设置的,也就是最长的结构体进行对齐,那以我的理解,P2的对齐的字长应该是P1(16)的长度啊。。。
然后,现在我又知道结构体的对齐的字长是根据基本数据结构进行对齐的,也就是 char short int double,那这里为什么选择4呢,我知道struct P1*是指针,指针是4个字节,但是如果按基本数据类型,同时考虑P2的第一个元素大小太大,他不应该是选择最大的基本数据类型的大小么?
如果是
struct P1{
double a;
char b;
};

这个的大小是16,也就是选择了duoble。。。
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
排山和倒海
C++ 语言 65,214 成员 250,514 内容