これがあなたが望むものであることを願っています:
MyStruct*** ddd = malloc(sizeof(MyStruct**) * 2);
ddd[0] = malloc(sizeof(MyStruct*) * 3);
ddd[0][0] = malloc(sizeof(MyStruct) * 2);
ddd[0][1] = malloc(sizeof(MyStruct) * 1);
ddd[0][2] = malloc(sizeof(MyStruct) * 4);
ddd[1] = malloc(sizeof(MyStruct*) * 1);
ddd[1][0] = malloc(sizeof(MyStruct) * 3);
=>
0: [
0: [
0: MyStruct,
1: MyStruct
],
1: [
0: MyStruct
],
2: [
0: MyStruct,
1: MyStruct,
2: MyStruct,
3: MyStruct
]
],
1: [
0: [
0: MyStruct,
1: MyStruct,
2: MyStruct
]
]
フリーハンドで書きましたが、通常は C++/C# しか書きません。