Debug assertion failed

Résolu
rj35 Messages postés 922 Date d'inscription   Statut Membre Dernière intervention   -  
rj35 Messages postés 922 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je crée un jeu en 2D, en c++ avec directx 9.0 sur visual studio express c++. Lorsque je quitte mon jeu, j'ai une erreur Debug assertion failed. En cherchant sur internet, j'ai compris qu'il s'agissait d'un cas typique de débordement de mémoire, voire d'utilisation de pointeur déjà libéré.

Est ce que je peux remonter juste avant le bogue pour connaitre l'origine de celui-ci?

Merci d'avance.

A voir également:

4 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
oui, c'est possible avec le debugueur, a tester en mettant des breakpoint juste avant de quitter et en executant pas à pas après.
0
rj35 Messages postés 922 Date d'inscription   Statut Membre Dernière intervention   138
 
J'ai déjà tenter pas à pas. J'ai cherché sur internet, et le bogue peut survenir bien avant la fermeture du programme, et se manifester lorsque le programme se ferme.

En cherchant dans la pile des appels, j'ai trouvé cette libération. Cependant l'enlever conduit à une fuite mémoire.

Il pourrait s'agir d'une double libération de plusieurs éléments. Je vais encore chercher, même si je ne sais pas où cette double libération se situe précisément.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
C'est très flou, il est difficile de t'aider.
ce problème peux venir de libération depointeurs multiples que tu traite mal, ou alors d'espaces mémoire qui sont pointés plusieurs fois.
Valgrind pourrait t'aider, mais je ne sais pas s'il fonctionne sur Windows.
0
rj35 Messages postés 922 Date d'inscription   Statut Membre Dernière intervention   138
 
J'ai pas mal cherché, j'ai mis un peu partout des if, pour vérifier que je ne dépassais pas la mémoire allouée aux tableaux (je sais c'est pas très pro, mais ça marche). Finalement, j'ai repéré un dépassement tableau qui n'était pas très explicite.

Le comportement de la gestion des erreurs est assez étrange. Lorsque je dépasse seulement d'une seule case un tableau, j'ai une debug assertation, mais quand je dépasse de 2 cases, j'ai un dépassement tableau.

Merci pour ton aide.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Le coup des if, j'y suis obliger des fois, car le debug modifie le binaire et ne reproduit pas l'erreur.
0
rj35 Messages postés 922 Date d'inscription   Statut Membre Dernière intervention   138
 
Les if, me permettent en plus des points d'arrêt de vérifier que certaines conditions sont toujours vraies. Des fois elles deviennent fausses, et je peux ainsi localiser le problème.
0