1 class Obj { 2 public: 3 float score; 4 float bbox[4]; 5 }; 6 7 class Result { 8 public: 9 int id; 10 float f[4]; 11 Obj obj[0]; 12 };
合法,可动态分配内存给Result *,包括不同大小的obj数组,方式如下:
1 Result * r = (Result*)malloc(sizeof(Result) + 3 * sizeof(Obj));
如下则不合法:
1 class Result { 2 public: 3 int id; 4 float f[4]; 5 Obj obj[0]; 6 float fea[4]; 7 };
因为不定长度的结构不在末尾,不能根据类的大小进行合理推断