我们在看一些代码的时候 经常会遇到诸如a这样的结构体
struct a{
char aa[0];
};
其实在编译的时候,编译器把结构体改成了
struct a{
char aa[]
};
结构体a 不占内存空间
我们可以看一个例子
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <memory.h>
4
5 struct a{
6 char aa[0];
7 };
8
9 int main(void)
10 {
11 struct a *p = NULL;
12
13 p = (struct a*)malloc(sizeof(struct a) + sizeof(char) * 100);
14 memset(p, 0, 100);
15
16 memcpy(p->aa, "hello world", 12);
17 printf("p->aa = %s sizeof(struct a) = %d\n", p->aa, sizeof(struct a));
18
19 free(p);
20
21 return 0;
22 }