Hallo
ich hab da ein kleines Problem, bzw eine Frage. Ich möchte gerne die
Anzahl der Structs in einem Structarray herrausfinden.
Ich hab leider momentan die Hardware nicht zur Hand zum testen.
Also prinzipiell funktioniert das ganze so (über das Programm verteilt):
1 | //ist irgendwo mal definiert
|
2 | typedef struct{
|
3 | uint16_t time;
|
4 | uint16_t address;
|
5 | uint64_t *data;
|
6 | uint8_t datalength;
|
7 | }can_messageblock_typedef;
|
8 |
|
9 | //lege ich mal irgendwo an
|
10 | can_messageblock_typedef *can_messages_struct;
|
11 | can_messages_struct = realloc(can_messages_struct,reservedbytes);
|
12 |
|
13 | //irgendwann schreib ich da auch mal was rein
|
14 | can_messages_struct[line].time = 1; //...
|
Jetzt das Problem. Ich möchte später mal wieder gerne die Anzahl der
"lines" wissen. Ich würde das wie folgt lösen, aber mit
sizeof(can_message_struct) werd ich ja nur die Größe des Pointers
erhalten. Wie bekomme ich die Größe eines allozierten Speichers heraus?
1 | anzlines = sizeof(can_message_struct)/sizeof(can_messageblock_typedef);
|
Das Problem hatte ich schon einmal. Damals habe ich das mit einer
Terminierung "gelöst", die ich dann wieder leicht finden konnte. Aber
geht das nicht auch anders?