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 потому что я'прочитаю некоторые данные там.

Способ 1: идти прямо к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;

Что быстрее?

Ответы на вопрос(3)

Ваш ответ на вопрос