扫码关注官方订阅号
class A { double a; short b; int c; char d; }
请问sizeof(A)的大小是多少?对齐的原则是什么
ringa_lee
不同编译环境的对齐方式略有不同,g++常用的规则是成员偏移必须整除自身大小,double大小8,偏移0没问题,short大小2偏移8,int大小4,如果偏移10就不对了,故c的偏移是12,接下来short大小1偏移16,这样一共是17字节,考虑到32位机器单次处理4字节,于是补3个字节凑成20字节为4倍数。估计64位就是24字节凑8倍数。爪机没试验过
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不同编译环境的对齐方式略有不同,g++常用的规则是成员偏移必须整除自身大小,double大小8,偏移0没问题,short大小2偏移8,int大小4,如果偏移10就不对了,故c的偏移是12,接下来short大小1偏移16,这样一共是17字节,考虑到32位机器单次处理4字节,于是补3个字节凑成20字节为4倍数。估计64位就是24字节凑8倍数。爪机没试验过