realloc aber nur die ersten paar bytes sind sinnvoll
Angenommen, ich habe verwendetptr = malloc(old_size);
Zuweisen eines Speicherblocks mitold_size
Bytes. Nur der ersteheader_size
Bytes ist sinnvoll. Ich werde die Größe auf erhöhennew_size
.
new_size
ist größer alsold_size
undold_size
ist größer alsheader_size
.
Vor:
/- - - - - - - old_size - - - - - - - \
+===============+---------------------+
\-header_size-/
nach dem:
/- - - - - - - - - - - - - - - new_size - - - - - - - - - - - - - - - - - - -\
+===============+------------------------------------------------------------+
\- header_size-/
Es ist mir egal, was danach gespeichert wirdptr + header_size
weil ich dort ein paar daten lesen werde.
new_size
ptr = realloc(ptr, new_size);
Methode 2: schrumpfen aufheader_size
und wachsen zunew_size
ptr = realloc(ptr, header_size);
ptr = realloc(ptr, new_size);
Methode 3: weisen Sie einen neuen Speicherblock zu, und kopieren Sie den erstenheader_size
Bytesvoid *newptr = malloc(new_size);
memcpy(newptr, ptr, header_size);
free(ptr);
ptr = newptr;
Welche ist schneller?