【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为实际数组的大小。

浙公网安备 33010602011771号