abfragen eines selbst erzeugten arrays
-
Hallo,
ich erzeuge mit malloc einen speicher den ich mit realloc ständig erweitere.
kann ich nun mit sizeof bestimmen an welcher speicherstelle ich stehe bzw. wie groß der speicher +1 sein muss.beim ersten mal
write = malloc(sizeof(short));
danach
write = realloc(write, sizeof(write) + sizeof(short));
und darauf schreiben
write[sizeof(write) / sizeof(short)]
ist etwas verwirrend da ich nach dem ersten malloc 4 Byte groß bin. Hab ich hier einen Denkfehler (eventuell wegen write[0] ... auch ein Feld) oder geht so etwas überhaupt nicht ?
Danke
worst_case
-
sizeof(write) / sizeof(short)
liefert dir einen konstanten ausdruck unabhängig davon wie gross dein array ist, weil sizeof(write) konstant ist (das ist nämlich die grösse in byte die dein pointer der write heisst im speicher belegt und hat nichts mit dem zu tun worauf der pointer zeigt)
naja und sizeof(short) ist plattformabhängig wird aber auf der gleichen plattform immer das gleiche ergebendie grösse des allokierten speichers musst du dir schon in einer extravariable merken...
deine ganze allokiererei ist ziemlich unorthodox...einfach malloc(sizeof(datentyp)*anzahl) verwenden...
naja und dann ist diese realloc wie du das da machst ziemlich riskannt weil du ja nicht weisst ob du den angeforderten speicher überhaupt bekommst...
wenn du einen nullpointer zurückbekommst liegt dein vorher allokierter speicher brach ohne das du was dagen machen kannst.
deswegen erst ein tmp-pointer verwenden und auf null checken...
wenn der dann in ordung ist wert=tmp...