sizeof eines allocierten Speichers

OP #1387974
Lesenswert?

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?
#1387980
Lesenswert?

nein.
sizeof liefert dir die größe einer struktur zurück.
sizeof(irgend_ein_pointer); gibt dir halt die größe der Pointervariablen 
zurück.

da hilft nur selbst mitzählen.

dynamische allozierungen haben nix auf kleinen µCs verloren.
wenn die keine mmu haben, ist es wie russisches Roulette. irgendwann 
passiert etwas, nur man weiß nicht wann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren