dynamisches Array

Was ich schreibe ist vielleicht mehr Pseudocode:

CMD_Record* CMD_Sequence = (CMD_Record*) calloc (NumSeq * (sizeof (CMD_Record));

Das ist ein Array namens CMD_Sequence aus CMD_Record. Das muss auf CMD_Record Pointer gecastet werden, da CMD_Sequence nur ein Pointer auf das erste Element des Arrays ist.

Oder du machst das:

CMD_Record* CMD_Sequence[123];
memset(CMD_Sequence, 0, 123 * sizeof(CMD_Record*));

Du hast dann erstmal 123 Pointer auf CMD_Records mit je 2 Byte, aber diese Structs existieren noch nicht! Das müsstet du dann nicht unbedingt dynamisch machen (es sei denn du willst doch mal mehr Pointer). Was du hier dynamisch machst ist bei Bedarf structs allozieren und die in das Pointer-Array schreiben.

z.B.

CMD_Sequence[77] = (CMD_Record*) calloc (sizeof(CMD_Record))

Das ist für ein einzelnes Struct, deshalb fällt die Sequenz-Nummer weg. Praktisch würdest du dann irgendwo einen Zähler mitlaufen lassen, der dir angibt wie viele structs existieren und über den das Array adressieren.

Wenn du das Array voll belegst, verbrauchst du natürlich durch die Pointer mehr Speicher. Aber wenn du es nicht voll ausnutzt sparst du welchen. Kommt halt dann drauf an...

Ein dynamisches Array auf Pointer wäre das:

CMD_Record** CMD_Sequence = (CMD_Record**) calloc (NumSeq * (sizeof (CMD_Record*));

Einen Befehl, den du vielleicht noch brauchst:
http://www.cplusplus.com/reference/cstdlib/realloc/
Damit kannst du ein Array vergrößern in dem du es in einen größeren Speicherbereich kopierst (das ist das was ein Vektor automatisch macht).