有的时候我们会看到有的struct里最后会定义一个容量为1的数组,直接来看,这个数组并没有意义。只能存放一个值,而我们定义数组显然不是为了只放一个数据。所以一般在分配空间的时候会根据需要申请为
malloc( sizeof(structtype) + bitsize );
相当于bits数组自然扩大。
而为什么我们不直接写成BYTE* bits一个指针,然后去指向这个空间?
这是为了保证空间的连续性。用第一种方法生成的空间整个struct是一个完整的空间。而第二种方法,它却指向另外一片空间。
总体来说安全性上存在一定风险。而且如果要free的时候要先free到bits指针,然后再free struct空间,而如果使用者忘记free bits,则就会导致内存泄漏。对于第一种只要free掉struct 就自然free掉了所有。