Problème avec ADOLib

Résolu
sixpack13 Messages postés 8 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 19 mai 2005 - 19 mai 2005 à 11:15
sixpack13 Messages postés 8 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 19 mai 2005 - 19 mai 2005 à 12:41
Bonjour à tous,

Voilà je fais une application en MFC avec Visual 6 et j'utilise ADOLib pour fair de la base de données.

J'arrive très bien à renseigner ma base, faire des requêtes de sélection etc ...

Mais voilà de temps en temps (trop souvent pour moi) j'ai des erreurs
de lecture de la mémoire avec le fameux message "La mémoire ne peux pas
être read".

Je voudrais savoir si quelqu'un sait d'où cela peut venir. Merci

4 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
19 mai 2005 à 12:36
Le pb avec les violations d'accès mémoire c'est que ça peut vite devenir aléatoire dans certains cas. Disons que tu ai un pointeur vers un pointeur. Si le pointeur de pointeur pointe vers une zone non allouée mais valide (dans une zone allouée par un autre objet par exemple) l'accès à ce pointeur sera valide mais donnera a peu près n'importe quoi comme second pointeur. l'accès à ce second pointeur est lié aux données se situant en mémoire à ce momment et la c'est au petit bonheur la chance de tomber sur une zone valide ou pas...
3
sixpack13 Messages postés 8 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 19 mai 2005
19 mai 2005 à 12:41
oki ben je vais revoir mon code alors.

Merci pour tes réponses.
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
19 mai 2005 à 12:11
Cela peut provenir de plein d'endroits, mais voici les principales causes :
- accès à un pointeur déjà libéré => mettre à NULL les pointeurs après un fre/delete et tester le NULL avant accès
- libération d'un pointeur non valide (non initialisé ou déjà libéré)
- accès à un élément hors des bornes d'un tableau => vérifier les bornes avant d'accéder et de modifier un élément

Comme tu est sous MFC utilises à fond en mode Debug tout ce qui est ASSERT, ASSERT_PTR, ASSERT_VALID... avant d'accéder à un objet ou à un pointeur ou tableau cela te permettra de vérifier une erreur de conception du code.

En cas de pb, tu auras une jloie boîte de dialogue t'indiquant la ligne incriminée et en mode debug tu pourras analyser le contexte d'éxécution.
0
sixpack13 Messages postés 8 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 19 mai 2005
19 mai 2005 à 12:27
Moi ce que je trouve bizare quend même c'est que l'erreur n'apparaît
pas à tout les coups. Si c'était un problème de pointeur, le problème
devrait revenir à chaque fois alors que là l'erreur revient
aléatoirement. Mais je vaiq quand même essayer tout ce que tu m'a dit.
0
Rejoignez-nous