[C++] Segmentation fault i vector
Ostatnio zmodyfikowano 2012-01-29 15:02
SeaMonster131 Temat założony przez niniejszego użytkownika |
[C++] Segmentation fault i vector » 2012-01-29 13:40:40 Przejdę od razu do rzeczy: po dodaniu 4 elementu do vector, aplikacja sie wywala :) Przy debugowaniu wyszło, że otrzymuje segmentation fault.. if( Przycisk.Click( 1 ) ) { dodac = true; idd = atoi( TBdodajTileID.GetText().c_str() ); for( int i = 0; i < tiles.size(); i++ ) { if( idd == tiles[ i ].ID ) { cout << "\nPodane ID juz istnieje!\n"; dodac = false; break; } } if( dodac ) { CTile t; string sc = TBdodajTile.GetText() + ".bmp"; cout << "\n\t" << sc << " o ID: " << idd << "\n"; t.img = al_load_bitmap( sc.c_str() ); t.ID = idd; tiles.push_back( t ); cout << "\nDODANO\n"; } }
I nie mam pojęcia co jest nie tak.. Zawsze przy dodaniu 4 elementu aplikacja się sypie. Ścieżka itd jest poprawna. O co może chodzić? |
|
DejaVu |
» 2012-01-29 14:06:17 { CTile t; t.img = al_load_bitmap( sc.c_str() ); t.ID = idd; }
Jeżeli w destruktorze CTile masz zwalnianie t.img to aplikacja i tak nie będzie działała dobrze... |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-01-29 14:09:45 Destruktora nie mam, jedynie przy wyłączeniu aplikacji "sprzątam" bitmapy. class CTile { public: ALLEGRO_BITMAP * img; int ID; };
vector < CTile > tiles;
Wcześniej zrobiłem coś w stylu: tiles.push_back( CTile(..) );
lecz nie działało dobrze (tj. tak samo jak teraz), więc zmieniłem na obecną formę, bez żadnego rezultatu. |
|
DejaVu |
» 2012-01-29 14:11:58 cout << "\n\t" << sc << " o ID: " << idd << "\n";
A ta linijka wypisuje coś zanim się wysypie aplikacja?
/edit:
No i popraw logi:
cout << "\nDODANO (" << t.img << ")\n";
|
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-01-29 14:13:11 Tak, wypisuje ona wszystko dobrze. Zresztą cout << "\nDODANO\n"; też się wypisuje (oba napisy dałem specjalnie do testów). media/tiles/test.bmp o ID: 1
DODANO
media/tiles/test.bmp o ID: 2
DODANO
media/tiles/test.bmp o ID: 3
DODANO
media/tiles/test.bmp o ID: 4
DODANO
Process returned -1073741819 (0xC0000005) execution time : 13.313 s Press any key to continue.
|
|
DejaVu |
» 2012-01-29 14:15:03 @up: przeczytaj to co jeszcze w edicie napisałem - może po prostu bitmapy nie udało się załadować i na niej pracujesz :) |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-01-29 14:19:39 Niestety to nie to :) Adres jest przydzielany, a po za tym, w dalszej części kodu, gdybym chciał wyświetlić sobie bitmapy z vector, to działa to poprawnie.. |
|
DejaVu |
» 2012-01-29 14:26:41 media/tiles/test.bmp o ID: 4
DODANO
Skoro dodanie się powiodło to znaczy, że to nie ten kod się składa. Skoro masz sprawny debugger to użyj callstacka gdy się aplikacja wywaliła i ustal miejsce zgonu. |
|
« 1 » 2 |