03/12/2012, 16:31
|
| | 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, |