Zwolnienie pamięci bitmapy dwuwymiarowej
Ostatnio zmodyfikowano 2011-01-04 16:55
Dragonit Temat założony przez niniejszego użytkownika |
Zwolnienie pamięci bitmapy dwuwymiarowej » 2011-01-04 16:04:58 Tworze bitmape dwuwymiarową: BITMAP * sciana[ 24 ][ 24 ]; Czy poprawne jest zwolnienie ją w ten sposób: for( int i = 0; i < 23; i++ ) { for( int j = 0; j < 23; j++ ) { destroy_bitmap( sciana[ i ][ j ] ); } }
Chyba nie, bo wywala mi okno z błędem głoszącym: Instrukcja spod "0x7c911eb" odwołuje się do pamięci pod adresem "0x013d664a". Pamięć nie może być "written". | Brak błędów kompilacji. Jak ją zwolnić ? |
|
malan |
» 2011-01-04 16:28:06 W jaki sposób inicjujesz tą tabelę? |
|
Dragonit Temat założony przez niniejszego użytkownika |
» 2011-01-04 16:43:13 Tak inicjuje: for( int i = 0; i < 24; i++ ) { for( int j = 0; j < 24; j++ ) { czySciana[ i ][ j ] =( rand() %( true + 1 - false ) ) + false; if( czySciana[ i ][ j ] == true ) sciana[ i ][ j ] = wall; else sciana[ i ][ j ] = noWall; } }
A tak wyświetlam: for( int i = 0; i < 24; i++ ) { for( int j = 0; j < 24; j++ ) { blit( sciana[ i ][ j ], bufor, 0, 0, sciana[ i ][ j ]->w * i, sciana[ i ][ j ]->h * j, sciana[ i ][ j ]->w, sciana[ i ][ j ]->h ); } }
|
|
ison |
» 2011-01-04 16:44:46 forami powinieneś lecieć 1 element dalej (<24) (w 1 poście) (zanim dodałeś kolejnego posta...) |
|
malan |
» 2011-01-04 16:47:11 Aaa, poznaję ten kod ;). Do tablicy przekazujesz tylko wskaźniki na bitmapy wall i noWall. Ładujesz je przecież tylko raz. Pamiętaj- funkcją destroy_bitmap zwalniasz te bitmapy, które załadowałeś za pomocą (np.) load_bmp. Czyli: destroy_bitmap( wall ); destroy_bitmap( noWall ); |
|
Dragonit Temat założony przez niniejszego użytkownika |
» 2011-01-04 16:55:16 Hehe. No tak miałem ostatnio problem z generowaniem tablicy. Teraz wróciłem dokończyć projekt. Dzięki "malan" za rozwiązanie kolejnej sprawy. Jeszcze z pewnością nie raz wrócę z pytaniem heh. Aha i dzięki "ison" za wyłapanie błędu, małego ale szkodliwego jakbym użył tego kodu. |
|
« 1 » |