弹性数组存在于形如下面的结构体:
class CZeroTest{public: int nCnt; int items[];};类 CZeroTest中的 int items[]即为该类的弹性数组,也可定义为 int items[0],可以发现sizeof(CZeroTest)为4,即弹性数组的大小为0,不占用空间。
之所以称为弹性数组,是因为给该类型的指针可以通过malloc或者new的方式给其数组分配一定的空间,如:
CZeroTest *ztOb;ztOb = (CZeroTest *)malloc(sizeof(CZeroTest) + 50 * sizeof(int)); //C语言方式ztOb = (CZeroTest *)new char(sizeof(CZeroTest) + 50 * sizeof(int)); //C++语言方式
上面代码则给ztOb对象中的弹性数组分配了50个int型空间的大小。items的空间地址在nCnt空间地址的后面。
弹性数组的释放:
free(ztOb); //C语言方式delete []ztOb; //C++语言方式从C99标准之后,就开始支持这种弹性数组