Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/12/2012, 02:21
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

El problema puede estar en la variable PORTS (declarada como puntero a char). Dado que no hay ninguna garantía de que al declarar de una variable se le asigne automáticaente el valor 0 (o NULL, en el caso de punteros), antes de utilizar un puntero con realloc conviene asegurarse de alguna de estas dos cosas:

1. Que se le haya asignado previamente un bloque de memoria mediante malloc o calloc.
2. Que ese puntero valga NULL.

El comportamiento de la función realloc, cuando le pasas un puntero cuyo valor no es NULL ni tiene un bloque de memoria asignado previamente, no está definido. Algunos compiladores pueden detectarlo y utilizarlo como si estuviera inicializado a NULL, pero lo normal es que se intente utilizar el área de memoria a la que apunta de manera aleatoria el puntero no inicializado y ello conduzca al desastre.

Empieza por inicializar el puntero a NULL (por ejemplo, en su declaración en la línea 13, en el programa que no te funciona), en el fondo sería equivalente a lo que hace el código que sí funciona (solo que te ahorrarías un if).

Si sigue sin funcionar, comprueba también que el nuevo tamaño que le quieres asignar es mayor que cero.

Y, en último caso, siempre puedes utilizar ese código que sacaste del ejemplo (ya sabes, si funciona no lo toques...).

Saludos,