對齊:是針對單個成員變量的;
補齊:是針對擺放的所有成員變量的整體而言要對齊;
//4字節的對齊粒度
#pragma pack(4) // #pragma pack(n) /* n = 1, 2, 4, 8, 16 */
struct aa{
int ma;
char arr[5];
double cc;
};
---4字節int---||---5字節arr---3字節對齊||---8字節double---4字節補齊||
4 + 8字節(5 + 3) + 8 + 4 = 24字節
未完待續,抽時間繼續深挖......
參考文獻
1. https://blog.csdn.net/cyousui/article/details/17655051
2. https://baike.baidu.com/item/%E5%86%85%E5%AD%98%E5%AF%B9%E9%BD%90