或者至少我認爲這個問題涉及某種內存錯誤。我正在使用SFML編寫程序,目前正在使用我爲SFML製作的GUI類來處理菜單。在內部,GUI類使用std :: shared_ptr來管理其所有內部指針。在main()退出並且所有全局析構函數被調用後,程序一直崩潰,gdb說在ntdll!WaitForAlpCompletion中觸發了一個斷點,這導致我相信問題是內存崩潰。每當我從菜單功能中刪除GUI實例化時,它都會退出並關閉而沒有錯誤。這似乎表明GUI是導致崩潰的原因,除了創建和銷燬它們自己的GUI實例的子菜單可以被調用並退出而沒有任何崩潰或斷點。在C++ GUI中查找內存錯誤
一些僞代碼:
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???
我在一個無所適從,這可能是。我計劃在今天的某個時候使用一些內存調試器,但我想知道是否有其他人對此有何看法。
int main()
{
int *A(new(std::nothrow) int(10));
int *B(A);
delete B;
delete A;
}
是否有你的代碼包含此類似的情況:
爲什麼我們只能看到僞代碼?我懷疑這是你的*設計*這是問題所在。 – 2012-01-11 04:40:52