Ou du moins, je pense que le problème implique une erreur de mémoire. Je fais un programme en SFML et je travaille actuellement sur les menus en utilisant une classe d'interface graphique que j'ai créée juste pour SFML. En interne, la classe GUI utilise std :: shared_ptr pour gérer tous ses pointeurs internes. Le programme se bloque systématiquement après les sorties main() et tous les destructeurs globaux ont été appelés, et gdb dit qu'un point de rupture a été déclenché dans ntdll! WaitForAlpCompletion, ce qui me porte à croire que le problème est une corruption de mémoire. Chaque fois que je supprime l'instanciation de l'interface graphique de la fonction de menu, il se ferme et se ferme sans erreur. Cela semble indiquer que l'interface utilisateur graphique est la cause de l'incident, sauf que les sous-menus qui créent et détruisent leurs propres instances d'interface graphique peuvent être appelés et quittés sans incident ni point d'arrêt.Localisation d'erreurs de mémoire dans une interface graphique C++
Certains psuedocode:
SubMenu
{
Create GUI
Do Menu
Destroy GUI
}
Menu
{
Create GUI
Do Menu?SubMenu
Destroy GUI
}
main
{
Init Stuff
Menu
UnInit Stuff
Destroy GUI
return 0
}
//after return
Global Dtors
Breakpoint triggered???
Je suis à une perte de ce que cela pourrait être. J'ai l'intention d'utiliser un débogueur de mémoire comme valgrind un jour, mais je me demandais si quelqu'un d'autre avait des idées sur ce que cela pourrait être.
Je doute que ce soit votre * design * qui pose problème. –