C中结构的大小

时间:2016-10-08 04:15:19

标签: c structure

我试图找出一个结构的大小,我认为它应该在我的64位Mac OS上显示为24个字节,而不是显示为32个字节。我错过了什么?

 #include<stdio.h>

 int main() {

 struct Test{
      int a;
      int *b;
      char *c;
      float d;
  }m;
  int size = sizeof(m);
  printf("%d\n",size);

}

2 个答案:

答案 0 :(得分:1)

任何字段都与其最小对齐对齐,对于整数和浮点数为4,对于指针为8。在这种对齐之前将使用填充和内存。由于SSE要求,完整结构与16对齐:

a: offset 0
b: offset 8 (4 bytes padding before)
c: offset 16
d: offset 24
padding 4 bytes to align to 16 bytes.

答案 1 :(得分:0)

对齐。 4字节int,填充4字节,8字节指针,8字节指针,4字节浮点数,4字节填充。