realloc, но только первые несколько байтов имеют смысл
Предположим, я использовалptr = malloc(old_size);
выделить блок памяти сold_size
байт. Только первыйheader_size
байты имеет смысл. Я'собираюсь увеличить размер до.new_size
new_size
больше, чемold_size
а такжеold_size
больше, чем .header_size
до:
/- - - - - - - old_size - - - - - - - \
+===============+---------------------+
\-header_size-/
после:
/- - - - - - - - - - - - - - - new_size - - - - - - - - - - - - - - - - - - -\
+===============+------------------------------------------------------------+
\- header_size-/
Я невсе равно, что хранится послеptr + header_size
потому что я'прочитаю некоторые данные там.
new_size
ptr = realloc(ptr, new_size);
метод 2: уменьшить доheader_size
и расти доnew_size
ptr = realloc(ptr, header_size);
ptr = realloc(ptr, new_size);
Способ 3: выделить новый блок памяти и скопировать первыйheader_size
байтовvoid *newptr = malloc(new_size);
memcpy(newptr, ptr, header_size);
free(ptr);
ptr = newptr;
Что быстрее?