70,036
社区成员
发帖
与我相关
我的任务
分享struct B{
char a;
unsigned long b;
unsigned short c;
char d;
}__attribute__((align(8)));
8字节对齐,a 和 b不足8个字节,补3个字节;c和d不足8个字节,补5个字节
个人理解
理解和讨论之前请先学会如何观察!
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
struct D{
char a;
char b;
char c;
char d;
char e;
char f;
char l;
char m;
}__attribute__((aligned(8)));
发现一个有趣现象,如果结构体内都是相同类型变量的就会一直叠加,直到发现不同基本类型变量,开始进行字节对齐计算;毫无意外,sizeof( D ) = 8;