看了“内存对齐”,自己的一些小问题。
typedef struct
{
int a;
char b[5];
char c[8];
}node;
void main()
{
// node *p = (node *)malloc(sizeof(node));
node *p = NULL;
printf("%d", sizeof(*p));
}
VC默认是8byte对齐吧
那我就理解node在内存里这样。
typedef struct
{
int a;
char pad1[4]; //填充
char b[5];
char pad2[3]; //
char c[8];
}node;
那就为24个byte,为什么sizeof(node)为20啊(和4byte对齐一样了)
node *p = NULL;
p指向一个空地址,那为什么sizeof(*p)还有值啊。
问题很菜,希望大家不要笑。