【C++】对包含变长数组的结构体分配内存

对于变长数组的结构体,在C++的类里是不允许实例化变量的。

所以,对于变长数组的结构体,我们一般是在C++类里用一个指向变长结构体的成员指针去声明。

如:

struct {

  int a;

  int b[0]; 

}T;

class c

{

  T *t;
}

另外,在初始化的过程中,我们需要对其进行内存分配,不然操作变长数组会出现内存越界的情况:

比如:

t = (T *) new(BYTE[(sizeof(T) + n *sizeof(int))];

或者

t = (T *) malloc(sizeof(T) + n*sizeof(int)); //其中n为实际数组的大小。

posted @ 2022-02-09 17:34  星星客  阅读(356)  评论(0)    收藏  举报