结构体边界对齐——请问我这个想法对不对
看这么一句话:
“如果#pragma pack (n)中指定的n 大于结构体中最大成员的size,则其不起作用,结构体
仍然按照size 最大的成员进行对界。”
我很不理解“结构体按照...对界”这种说法。
它是想说——结构体的在内存的首地址会跟最大成员的size对齐。
还是想说——结构体内部的每个成员的存放地址都要跟最大成员的size对齐。
我猜是第一种:大家指点一下:)
[解决办法]
应该是每一个成员都跟它之前的最大的对齐吧?
而不是整个结构体里最大的那个吧。
- C/C++ code
#include <stdio.h>int main(){ struct AA { char a; char b; int c; int d; }; struct BB { char a; int c; char b; int d; }; printf("\nchar:%d, int:%d, AA:%d, BB:%d", sizeof(char), sizeof(int), sizeof(struct AA), sizeof(struct BB)); getchar(); return 0;}