柔性数组:
当结构的某一项成员数量不固定,可以在结构末尾定义一个长度为零的数组,这种数组就叫柔性数组,在为结构变量分配内存时多分配一些,多分配的内存就归柔性数组使用。
使用成员指针的缺点:
1、使用麻烦,必须两次分配,两次释放。
2、危险性高,容易出现野指针、内存泄漏。
3、结构变量和成员指针所指向的内存是两个独立的内存块,容易产生内存碎片。
4、成员指针会占用结构的4|8字节空间,再考虑对齐和补齐,浪费的内存更多。
柔性数组的优点:
1、使用方便,不需要单独为柔性数组分配内存,只需要为结构变量分配内存时多分配一些即可。
2、安全性高,柔性数组只是结构中的标记符,因此不会使用到野指针。
3、柔性数组所使用内存块与结构变量是一体的,与结构变量的内存一起分配一起释放,因此也不容易产生内 存泄漏、内存碎片。
4、节约内存,柔性数组只是结构中的标记符,不会占用结构额外的内存,在计算结构总字节数时,不用柔性数组计算在内。
柔性数组的缺点:
这种语法在是C99语法标准中提出并实现的,早期的只支持C89的编译器,不支持此用法,通用性不强。