长度为0的数组的优点

参考 https://www.cnblogs.com/tangxin-blog/p/5560699.html

总结:

定义一个用于存储char型数据的10字节空间,结构体A使用0长度数组,结构体B使用定长数组,结构体C使用指针。

struct A{
char content[0];
} ;
struct B{
char content[10];
};
struct C{
char* content;
};
struct A* s1 = (struct A*)malloc(10);
struct B  s2;
struct C* s3 = (struct C*)malloc(sizeof(struct C));
s3.content = (char*) malloc(10);

--------------------------------------------------------------------------------

A和B相比,优点是长度灵活,由malloc参数决定。

A和C相比,优点是A是以整个结构体去申请空间,一次即可,空间连续,释放结构体空间的时候也就顺带把content空间释放了。C还得为content成员去申请空间,销毁结构体的时候还需要把申请的空间释放,不然会出现内存泄漏。

结构体长度对比,A最短

sizeof(struct A) == 0;sizeof(struct B) == 10; sizeof(struct C) == 4;

猜你喜欢

转载自blog.csdn.net/u013345641/article/details/82532990