Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, Allegro]Wykrywanie wycieków pamięci

Ostatnio zmodyfikowano 2011-03-07 22:10
Autor Wiadomość
malan
» 2011-03-06 01:15:55
Więc tak.
Cztery (z sześciu) wycieków to... nie są wycieki. To po prostu destruktory, które obudzą się po wyjściu z maina. Jak to sprawdzić? Wstaw cały kod z maina (prócz
_CrtDumpMemoryLeaks();
) w sztuczny blok, tzn.:
C/C++
int main()
{
    {
        allegro_init();
        //...
        allegro_exit();
    }
    _CrtDumpMemoryLeaks();
    return 0;
}
Już są tylko dwa, prawda? Dobra, ale skąd te dwa?
Po usunięciu:
C/C++
#if _DEBUG
#pragma comment(lib, "alld.lib")
#else
#pragma comment(lib, "alleg.lib")
#endif
...i zalinkowaniu normalnie ilość memorylaków spadła do zera...
P-28898
mar3
Temat założony przez niniejszego użytkownika
» 2011-03-06 11:17:38
Malan postąpiłem tak jak napisałeś i dalej mi wykrywa wycieki:
Detected memory leaks!
Dumping objects ->
{742} normal block at 0x0435FAC0, 504 bytes long.
 Data: <                > 00 00 00 00 C0 01 00 00 02 00 00 00 20 00 00 00
{739} normal block at 0x04358440, 20 bytes long.
 Data: <a               > 61 01 00 00 AA 01 00 00 20 00 18 00 00 00 00 00
{138} normal block at 0x00FA4CD0, 256 bytes long.
 Data: <)L              > 29 4C FA 00 00 00 00 00 CD CD CD CD CD CD CD CD
{137} normal block at 0x00FA4C28, 107 bytes long.
 Data: <"C:\Users\Marcin> 22 43 3A 5C 55 73 65 72 73 5C 4D 61 72 63 69 6E
{136} normal block at 0x00FA4BE0, 8 bytes long.
 Data: <  !     > 9C D3 21 01 00 00 00 00
{135} normal block at 0x00FA4B98, 8 bytes long.
 Data: <  !     > 88 D3 21 01 00 00 00 00
Object dump complete.
P-28902
malan
» 2011-03-06 11:52:25
Więc coś robisz źle :)
P-28903
mar3
Temat założony przez niniejszego użytkownika
» 2011-03-06 12:12:25
Tutaj zamieściłem projekt poprawiony zgodnie z tym co napisał malan. Niestety, ale dalej wykrywa mi wycieki pamięci.
P-28904
malan
» 2011-03-06 16:14:14
Heh, to są jaja jakieś :D. Później (jak nie zapomnę) wrzucę przerobiony kod po mojemu i skompilujesz u siebie ;p.
P-28917
DejaVu
» 2011-03-06 18:20:19
to nie sa jaja - jezeli linkujesz dll to dllka pozniej jest usuwana niz wyjscie z funkcji main, wiec wykrywa wyciek, ktorego moze nie byc bo dllka posprzata do konca swoje zasoby.
P-28923
mar3
Temat założony przez niniejszego użytkownika
» 2011-03-06 18:42:53
No dobrze, ale malan pisał, że to tylko dwa z sześciu wycieków, a cztery z sześciu to destruktory, które obudzą się po wyjściu z maina i że można to udowodnić wstawiając cały kod z maina (prócz
_CrtDumpMemoryLeaks();
) w sztuczny blok. Zrobiłem to, a i tak są wykrywane wszystkie wycieki.            
P-28925
malan
» 2011-03-06 19:14:10
gra_platformowa.rar - skompiluj to. Pamiętaj żeby edytować VC++ Directories.
P-28926
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona