[C++, Allegro]Wykrywanie wycieków pamięci
Ostatnio zmodyfikowano 2011-03-07 22:10
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.: int main() { { allegro_init(); allegro_exit(); } _CrtDumpMemoryLeaks(); return 0; } Już są tylko dwa, prawda? Dobra, ale skąd te dwa? Po usunięciu: #if _DEBUG #pragma comment(lib, "alld.lib") #else #pragma comment(lib, "alleg.lib") #endif
...i zalinkowaniu normalnie ilość memorylaków spadła do zera... |
|
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. |
|
malan |
» 2011-03-06 11:52:25 Więc coś robisz źle :) |
|
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. |
|
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. |
|
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. |
|
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. |
|
malan |
» 2011-03-06 19:14:10 |
|
1 2 « 3 » 4 |