Tengo problemas para entender cómo funciona realloc. Si malloc'ed un búfer y copiado de datos a la memoria intermedia, digamos "AB":¿Perdemos datos en un búfer después de reasignarlos?
+------------+
| A | B | \0 |
+------------+
entonces realloc'ed la memoria intermedia, habrá alguna perdida en los datos (incluso un solo byte)? ; o simplemente expande el buffer? :
+------------------------+
| A | B | \0 | ? | ? | ? |
+------------------------+
código:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
char* buffer = (char*) malloc(sizeof(char) * 3);
strncpy(buffer, "AB", 2);
buffer = (char*) realloc(buffer, sizeof(char) * 6); /* Will there be any lost here? */
free(buffer);
return(0);
}
Por qué ¿No puede hacer 'buffer = realloc (tampón, newSize);'? –
@ylun por las razones explicadas en la respuesta –
Derecha, por lo que para evitar la pérdida de datos, primero debe verificar que la asignación sea correcta y luego reasignarla, gracias. –