realloc pero solo los primeros bytes son significativos
Asume que he usadoptr = malloc(old_size);
para asignar un bloque de memoria conold_size
bytes Solo la primeraheader_size
Los bytes son significativos. Voy a aumentar el tamaño paranew_size
.
new_size
es mayor queold_size
yold_size
es mayor queheader_size
.
antes de:
/- - - - - - - old_size - - - - - - - \
+===============+---------------------+
\-header_size-/
después:
/- - - - - - - - - - - - - - - new_size - - - - - - - - - - - - - - - - - - -\
+===============+------------------------------------------------------------+
\- header_size-/
No me importa lo que se almacena despuésptr + header_size
Porque voy a leer algunos datos hasta allí.
new_size
ptr = realloc(ptr, new_size);
método 2: reducir aheader_size
y crecer paranew_size
ptr = realloc(ptr, header_size);
ptr = realloc(ptr, new_size);
Método 3: asignar un nuevo bloque de memoria y copiar el primeroheader_size
bytesvoid *newptr = malloc(new_size);
memcpy(newptr, ptr, header_size);
free(ptr);
ptr = newptr;
¿Cual es mas rápido?