URGENT : Verifier la validité d'un pointeur en Realease ?

Signaler
Messages postés
7
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
6 août 2010
-
Messages postés
7
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
6 août 2010
-
Bonjour,

Je suis confronter a un probleme dans un code que je debbug. Voila le code principal ajoute des pointeur de classe dans un collection MFC.
Or la verification des pointeurs ajoutés n'est faite que par comparaison avec la valeur NULL ou avec la fonction ASSERT_VALID qui ne fonctionne qu'en debbug.

Un specialiste pourrais me conseiller sur la methode pour verifié la validiter des pointeurs. Ou dois attendre l'exception Access Violation Memory et la gerer ?

Merci de me répondre sur mon mail zyxxx75@ifrance.com.

Merci d'avance.

3 réponses

Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
1
Je suis aussi interressé par la reponse à ce message, donc si on pouvait aussi avoir la reponse sur le forum ;)
++ Glipper
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Il y a IsBadCodePtr() pour verifier acces memoire a l'adresse du pointeur mais aucune garantie que soit adresse de la classe voulue.
Aucune solution 'pret a l'emploi', il faut gerer correctement les pointeurs en les remettant bien a ZERO au bon moment.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
7
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
6 août 2010

Merci pour vos reponse, j'ai les info que je cherchais maintenant.

Voici les reponses que j'ai obtenu sur un autre forum de programmation :

Reponse de la drogue c'est mal :

t'as tout une batterie de fonction qui verifie la "validité" des pointeurs mais ca ralenti le programme :

IsBadCodePtr
IsBadReadPtr
IsBadStringPtr
IsBadWritePtr

Reponse de farscape :

salut,
de plus un pointeur qui contient 0xdddddddd est un pointeur dont la memoire a ete liberée

extrait MSDN:
Citation:

Table 1. Potential patterns Pattern Description
0xFDFDFDFD No man's land (normally outside of a process)
0xDDDDDDDD Freed memory
0xCDCDCDCD Uninitialized (global)
0xCCCCCCCC Uninitialized locals (on the stack)

Voila, bonne journée.

PS : Par acquis de conscience je donne la reference au site :
Extrait du forum www.developpez.net.