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

cs_zyxxx75 Messages postés 7 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 6 août 2010 - 15 avril 2004 à 11:14
cs_zyxxx75 Messages postés 7 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 6 août 2010 - 15 avril 2004 à 14:35
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

glipper Messages postés 246 Date d'inscription dimanche 2 juin 2002 Statut Membre Dernière intervention 11 septembre 2016 1
15 avril 2004 à 12:11
Je suis aussi interressé par la reponse à ce message, donc si on pouvait aussi avoir la reponse sur le forum ;)
++ Glipper
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 avril 2004 à 12:34
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++
0
cs_zyxxx75 Messages postés 7 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 6 août 2010
15 avril 2004 à 14:35
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.
0
Rejoignez-nous