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 };
因为不定长度的结构不在末尾,不能根据类的大小进行合理推断