首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

结构体边界对齐——请教小弟我这个想法对不对

2012-10-27 
结构体边界对齐——请问我这个想法对不对看这么一句话:“如果#pragma pack (n)中指定的n 大于结构体中最大成

结构体边界对齐——请问我这个想法对不对
看这么一句话:
  “如果#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;} 

热点排行