Fonction get_first/violation de lecture

Fermé
api08 Messages postés 38 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 5 janvier 2011 - 5 janv. 2011 à 01:04
 Kalimero - 21 janv. 2012 à 19:22
slt,
je fais un programme sur les liste chainé lors d'execution ce message apparait:
Unhandled exception at 0x01303aeb in liste.exe: 0xC0000005: Access violation reading location 0x00000008.

voila le prog:
typedef struct _Dliste {
struct _Dliste *next;
struct _Dliste *prev;
void * info;
}Dliste;

Dliste* get_first(Dliste* ref)
{
if(ref==NULL)
return NULL;
while(ref->prev!=NULL)
ref=ref->prev;
ref->next=ref;
return ref;
}

main()
{
int a,b,c,d;
Dliste* trouve;
Dliste*ref=NULL;
a=1;
b=2;
c=3;
d=4;
ref=node_create(a);
printf("%d\n",ref->info);
add_tail(ref, b);
add_tail(ref, c);
add_tail(ref, d);



printf("b=%d\n",ref->info);
if(ref==NULL)
printf("faux");
while(ref!=NULL)
{
printf("%d\n",ref->info);
ref=ref->next;
}
trouve = get_first(ref);
printf("trouve= %d\n",((int)trouve->info));

system("PAUSE");

}
merci
A voir également:

2 réponses

Profil bloqué
5 janv. 2011 à 01:09
Peut pas t'aidez
0
bonjour,

2 choses :
- Est-ce que dans ta fonction "node_create" tu penses bien à mettre tes pointeurs next et prev à NULL ? C'est surment de là que vient ta violation d'access.
- Dans ta fonction get_first, pourquoi mettre la ligne "ref->next = ref;", celà génère une grosse fuite mémoire si les cellules suivantes ne sont pas libérées.
0