Witam,
robię sobie mały projekcik - grę tetris.
W tej chwili jest to jeszcze bieda, aczkolwiek działa.
Problem:
Mam klasę CGame, zawiera ona główną karuzelę wychwytującą akcje użytkownika oraz uruchomiony na sekundę przed nią wątek tworzący klocki i ustawiający je, animujący etc.
Klasa ta (singleton) posiada również flagę (czy kontynuować przetwarzanie, jezeli zmieni się na true, wątek oraz karuzela dostaje info o zakończeniu pracy).
I tutaj jest cały problem, gdy naciskam 'q' lub zamykam okienko, co powoduje zamkniecie karuzel i wywołanie destruktorów dostaję błąd o nadpisanej stercie.
Niestety nie mogę się dokopać co dokładnie jest nie tak.
Zapis stosu:
ntdll.dll!_RtlReportCriticalFailure@8() Unknown
ntdll.dll!_RtlpHeapHandleError@4() Unknown
ntdll.dll!_RtlpLogHeapFailure@24() Unknown
ntdll.dll!RtlFreeHeap() Unknown
msvcr120.dll!free(void * pBlock) Line 51 C
Tetris.exe!std::_DebugHeapDeletestd::_Facet_base(std::_Facet_base * _Ptr) Line 62 C++
Tetris.exe!std::~locale() Line 440 C++
Tetris.exe!``anonymous namespace'::path_locale'::2'::
dynamic atexit destructor for 'loc''() C++
msvcr120.dll!doexit(int code, int quick, int retcaller) Line 628 C
msvcr120.dll!exit(int code) Line 417 C
Tetris.exe!__tmainCRTStartup() Line 666 C
kernel32.dll!@BaseThreadInitThunk@12() Unknown
ntdll.dll!__RtlUserThreadStart() Unknown
ntdll.dll!__RtlUserThreadStart@8() Unknown
Błąd wyskakuje zaraz potym jak wyjdę z funkcji main.
Link do kodu:
https://github.com/bartekordek/Tetris
Jeżeli nikt nie będzie w stanie/chciało się pokazać mi co jest nie tak, to prosiłbym chociażby o podpowiedź od czego powinienem zacząć szukanie takiego chochlika.
Z góry przepraszam za kod, jest "smelly", nad czym walczę, wszelkie rady, obelgi i zarzuty przyjmę z radością.