在标准 C 中,您可以使用大小为 0 的数组结束结构,然后过度分配它以向数组添加可变长度维度:
struct var
{
int a;
int b[];
}
struct var * x=malloc(sizeof(var+27*sizeof(int)));
您如何以标准(可移植)方式在 C++ 中做到这一点?可以限制最大可能大小,并且显然不必在堆栈上工作
我在想:
class var
{
...
private:
int a;
int b[MAX];
};
然后使用分配器或重载 new/delete 以根据所需的大小分配不足:
(sizeof(var) - (MAX-27)*sizeof(int)
但是,虽然它似乎有效,但它不是我想要维护的东西。
是否有一种完全标准/便携的更清洁方式?