Aca va un pequeño ejemplo que si bien no usa la misma estructura que yo
tengo definida da el mismo error:

#include <stdlib.h>

typedef struct nodo
{
        struct nodo *proxNodo;
} nodo;

nodo *agregarNodo(nodo *ptrNodo);

nodo *agregarNodo(nodo *ptrNodo)
{
        if (ptrNodo != NULL)
        { 
                ptrNodo->proxNodo = (nodo *) malloc(sizeof(nodo));
                ptrNodo = ptrNodo->proxNodo;
        }
        else
        {
                ptrNodo = (nodo *) malloc(sizeof(nodo));
                ptrNodo->proxNodo = NULL;
        }
        return ptrNodo;
}

int main (int argc, char **argv)
{
        nodo *ptrLista = NULL;
        nodo *ptrNodo = NULL;
        nodo *ptrNodoSiguiente = NULL;
        
        ptrLista = agregarNodo(ptrLista);
        ptrNodo = agregarNodo(ptrLista);

        ptrNodo = ptrLista;     
        while(ptrNodo != NULL)
        {
                ptrNodoSiguiente = ptrNodo->proxNodo;
                free(ptrNodo);  
                ptrNodo = ptrNodoSiguiente;
        }
        return 0;
}

Estoy compilando de la siguiente forma

cc -Wall -ansi -pedantic-errors -O3 -DNDEBUG -ggdb -DDEBUG -fno-inline
-c -o ej.o ej.c 

Corriendolo con valgrind:

valgrind --tool=memcheck ./ej
==10594== Memcheck, a memory error detector.
==10594== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et
al.
==10594== Using LibVEX rev 1658, a library for dynamic binary
translation.
==10594== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
==10594== Using valgrind-3.2.1-Debian, a dynamic binary instrumentation
framework.
==10594== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et
al.
==10594== For more details, rerun with: -v
==10594== 
==10594== Conditional jump or move depends on uninitialised value(s)
==10594==    at 0x804843E: main (ej.c:35)
==10594== 
==10594== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 11 from
1)
==10594== malloc/free: in use at exit: 0 bytes in 0 blocks.
==10594== malloc/free: 2 allocs, 2 frees, 8 bytes allocated.
==10594== For counts of detected errors, rerun with: -v
==10594== All heap blocks were freed -- no leaks are possible.

Saludos!

El dom, 30-09-2007 a las 21:25 -0300, Gonzalo Merayo escribió:
> Javier,
>    ¿Podes armar un programita minimo para reproducir?
>    ¿Estas compilando con -O0?
> 
> Saludos
> 
> On 9/30/07, Javier Persico <[EMAIL PROTECTED]> wrote:
> > Me encuentro con el mismo problema con valgrind en cuanto a la variable
> > no inicializada, probe varias cosas pero nada funciona.
> >
> > Esto es lo que da valgrind:
> >
> > ==16684== Conditional jump or move depends on uninitialised value(s)
> > ==16684==    at 0x804905A: limpiarLista (lista.c:50)
> > ==16684==    by 0x8048B94: main (main.c:113)
> >
> >
> > Mi funcion es:
> >
> > lista.c
> > 47 void limpiarLista(nodo *ptrLista)
> > 48 {
> > 49      nodo *ptrNodo = ptrLista;
> > 50      while(ptrNodo != NULL)
> > 51              ptrNodo = borrarNodo(ptrNodo);
> > 52 }
> >
> > main.c
> > 4   /* Inicializacion del puntero a la lista */
> > 5   nodo *headerLista = NULL;
> > 113 limpiarLista(headerLista);
> >
> > Es evidente que el puntero esta inicializado.
> >
> > Nota: headerLista se pasa como parametro y en algunos casos es
> > modificado por otras funciones.
> >
> >
> > Saludos!
> >
> >
> >
> > _______________________________________________
> > Lista de correo Programacion.
> > [email protected]
> > http://listas.fi.uba.ar/mailman/listinfo/programacion
> >
> >
> 
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a