1
Général / Access Violation à la fermeture du programme (non dû aux font)
« le: Octobre 20, 2013, 01:07:22 pm »
Bonjour,
J'ai un problème dans mon programme qui est assez gênant :
Lorsque j'appelle la fonction window.close(), j'ai une erreur de type "Access Violation" qui apparaît.
Le truc, c'est que si je l'appelle dès le début du programme, tout se ferme sans problème.
Le problème intervient donc après que j'ai fait se déplacer mes personnages (j'ai donc manipulé des pointeurs et des listes dynamiques de type Vector ou Deque pour qu'ils trouvent un chemin optimal, puis déplacé leur sprites).
Je soupçonne donc un problème de pile ou de pointeurs, mais étant un peu nouveau dans le C++ et dans SFML, j'ai vraiment du mal à voir comment débuguer ça.
Je ne vous link malheureusement pas le code qui est assez exhaustif, mais en gros ça donne :
Merci d'avance pour votre aide!
NB : J'utilise Windows 7, la dernière version de SFML (2.1), et Visual Studio 11 (2012).
J'ai un problème dans mon programme qui est assez gênant :
Lorsque j'appelle la fonction window.close(), j'ai une erreur de type "Access Violation" qui apparaît.
Le truc, c'est que si je l'appelle dès le début du programme, tout se ferme sans problème.
Le problème intervient donc après que j'ai fait se déplacer mes personnages (j'ai donc manipulé des pointeurs et des listes dynamiques de type Vector ou Deque pour qu'ils trouvent un chemin optimal, puis déplacé leur sprites).
Je soupçonne donc un problème de pile ou de pointeurs, mais étant un peu nouveau dans le C++ et dans SFML, j'ai vraiment du mal à voir comment débuguer ça.
Je ne vous link malheureusement pas le code qui est assez exhaustif, mais en gros ça donne :
while (window.isOpen())
{
while (window.pollEvent(event))
{
if(event.type == Event::KeyPressed)
{
if(Keyboard::isKeyPressed(Keyboard::Escape))
window.close();
}
}
//Déplacer entites
for(int i=0; i<NB_CHAR; i++)
if(entite[i]->deplacement)
deplacer(*entite, entite[i], i, batiments);
// Draw the chars
for(int i=0; i<NB_CHAR; i++)
window.draw(entite[i]->char_sprite);
//Show the window
window.display();
}
{
while (window.pollEvent(event))
{
if(event.type == Event::KeyPressed)
{
if(Keyboard::isKeyPressed(Keyboard::Escape))
window.close();
}
}
//Déplacer entites
for(int i=0; i<NB_CHAR; i++)
if(entite[i]->deplacement)
deplacer(*entite, entite[i], i, batiments);
// Draw the chars
for(int i=0; i<NB_CHAR; i++)
window.draw(entite[i]->char_sprite);
//Show the window
window.display();
}
Merci d'avance pour votre aide!
NB : J'utilise Windows 7, la dernière version de SFML (2.1), et Visual Studio 11 (2012).