我试图找出一个结构的大小,我认为它应该在我的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);
}
答案 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字节填充。