概念
- 柔性数组成员(flexible array member)也叫伸缩性数组成员,这种代码结构产生于对动态结构体的需求。在日常的编程中,有时候需要在结构体中存放一个长度动态的字符串,一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间。
#include <iostream>
using namespace std;
struct Test{
int a;
char c[0];
};
int main(){
Test *p = (Test*)new char[sizeof(Test)+100*sizeof(char)];
delete [] p;
}
//c被称为柔性数组成员,不占用test的空间,只作为一个符号地址存在。柔性数组成员不仅可以用于字符数组,还可以是元素为其它类型的数组。但结构中的柔性数组成员前面必须至少一个其 他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。