Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/12/2012, 16:31
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 7 meses
Puntos: 73
Respuesta: Agregar más espacio a un char

Cada vez que asignas memoria con malloc obtienes un bloque de memoria nuevo, perdiendo lo que tenías en el antiguo, además estás perdiendo la memoria ya reservada, y esto ocurre en cada iteración del bucle.

La función que necesitas es realloc:

void *realloc(void *ptr, size_t size);

Esta función cambia la cantidad de memoria reservada a la que apunta ptr. Si el nuevo tamaño es mayor que el antiguo, se conserva lo que contenía el bloque antiguo y el resto queda con contenido indefinido. Si el tamaño es menor que el antiguo, se conserva hasta ese punto. La variable puntero antigua y la nueva pueden ser la misma, es decir, puedes poner

miPuntero = realloc(miPuntero, nuevo_tamanyo);

Y no olvides liberar la memoria reservada con free cuando ya no la necesites.

Saludos,