我在动态内存分配方面遇到了麻烦。不知何故,我的结构的实际大小(所有部分的总和)小于类型本身的大小。这是代码:
#include <stdio.h>
#include <malloc.h>
struct Lol {
int a;
char b;
char s[20];
};
void main() {
Lol* lol = (Lol*)malloc(sizeof(Lol));
printf("Type size: %d bytes\n", sizeof(Lol));
printf("Actual struct size: %d bytes\n", sizeof(lol -> a) + sizeof(lol -> b) + sizeof(lol -> s));
}
在这种情况下,结构大小应该是 25 个字节(4 个字节用于 int,1 个字节用于 char,20 个字节用于 char 数组),但 sizeof(Lol) 出于某种原因显示为 28,因为 char 类型将被视为 int 类型。这一切是怎么回事?这是否意味着我什么都没有丢失 3 个字节?