也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。
C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。
柔性数组比较灵活,你可以根据你的需要去创建他的大小,你也可以在后期觉得大小不够了选择对其进行扩容。
柔性数组的特点:
1.结构中的柔性数组成员前面必须至少一个其他成员。
2.sizeof 返回的这种结构大小不包括柔性数组的内存。
3.包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。
结构中的柔性数组成员前面必须至少一个其他成员。
因为我们的数组大小在算结构体的总大小的时候是不计算在内的,所以我们必须在前面有其他成员来表示我们这个结构体不是空的。
2.sizeof 返回的这种结构大小不包括柔性数组的内存。
只算了柔性数组前面成员所占位置的大小
3.包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。
当我们觉得数组的大小不够用的时候可以选择对数组进行扩容:
使用柔性数组的好处:
方便内存释放:
有利于访问速度:
连续的内存有益于提高访问速度,也有益于减少内存碎片。