Bonjour, je code actuellement un jeu avec la librairie SDL qui utilise plusieurs threads (mais que je ne suis pas sûr de gérer parfaitement), et jusqu'à maintenant mon jeu fonctionnait bien, j'ai voulu y rajouter quelques fonctionnalitées et c'est comme si tout c'était déréglé.
Je m'explique : lorsque je lance le débogage, tout se lance parfaitement, la fenêtre s'ouvre et je peux jouer. Pendant environ une minute ou 2, rien de particulier ne se passe. Puis un point d'arrêt se déclenche et j'obtiens ces messages d'erreurs :
Et mon code s'arrête sur une instruction du type :Critical error detected c0000374
Vaisseau.exe a déclenché un point d'arrêt.
Exception de première chance à 0x7707AA3C (ntdll.dll) dans Vaisseau.exe*: 0xC0000374: Un segment de mémoire a été endommagé (paramètres*: 0x7708FE38).
Exception non gérée à 0x7707AA3C (ntdll.dll) dans Vaisseau.exe*: 0xC0000374: Un segment de mémoire a été endommagé (paramètres*: 0x7708FE38).
Exception de première chance à 0x6812362E (SDL.dll) dans Vaisseau.exe*: 0xC0000005*: Violation d'accès lors de la lecture de l'emplacement 0xFEEEFEF6.
Exception non gérée à 0x6812362E (SDL.dll) dans Vaisseau.exe*: 0xC0000005*: Violation d'accès lors de la lecture de l'emplacement 0xFEEEFEF6.
Parfois c'est une autre instruction mais c'est toujours sur un SDL_FreeSurface qui est pourtant précéder d'une condition.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if(dataAffichage.tabAsteroide[i].imageEnMouvement != NULL) SDL_FreeSurface(dataAffichage.tabAsteroide[i].imageEnMouvement);
Et j'ai remarqué aussi en lançant le gestionnaire de tâche à côté que lorsque je lance mon jeu, la mémoire allouée est de 16.2 Mo et reste constante.. Pendant un certain temps. C'est à dire qu'après environ 1 minute de jeu, la mémoire allouée commence à grimper sans s'arrêter. Environ 0.5 Mo de mémoire est allouée en plus à chaque seconde, ce qui ne devrai pas être le cas.
Enfin, si je ne poste pas mon code c'est parce que je ne sais vraiment pas d'où peut venir ce phénomène et je ne vais pas poster + de 500 lignes de codes..
Si quelqu'un à une idée d'où pourrai venir l'erreur, je suis preneur..
Merci d'avance !
Partager