[C con Clase] problema con la lista dinámica...

Programante programante en gmail.com
Vie Sep 28 23:47:15 CEST 2007


ERVA escribió:
> Hola.
>
> Estoy programando una lista ligada con punteros. Tengo la siguiente estructura:
>
> struct Nodo
> {
>   int dato;
>   Nodo *siguiente;
> };
>
> ...
>
> En la parte donde implemento la asignacion de los datos, uso una variable temporal del tipo Nodo, entonces hago lo siguiente:
>
> Nodo *tmp = NULL;
>
> ...
>
> tmp = (Nodo *)malloc( sizeof(Nodo) );
> tmp->siguiente = NULL;
>
> ...
>
> (Las lineas anteriores se encuentran dentro de un ciclo repetitivo)
>
> Cuando ejecuto mi programa, observo que funciona adecuadamente en las primeras tres iteraciones, pero en la cuart me lanza una excepcion precisamente en la linea donde hago:
>
> tmp->siguiente = NULL;
>
>
> Tienen alguna idea del por que ese comportamiento? De antemano muchas gracias.
>
> Salu2.
>
> P.D.
> Si se ocupa transcribir mas codigo, con gusto lo publico
En principio el fragmento de código es correcto.
Podría fallar en caso de que malloc() no pueda reservar la memoria 
pedida, en cuyo caso devuelve NULL, con lo que fallaría en 
tmp->siguiente = NULL.
Pero habiendo solicitado previamente únicamente 24 bytes no tiene 
sentido que no tenga espacio para otros 8. Tendrías que solicitar 
cientos de megas para que fallase.
¿Podrías incluir el resto de la función? O como mínimo del bucle.




Más información sobre la lista de distribución Cconclase