Dynamiczne tworzenie tablicy wskaźników
Ostatnio zmodyfikowano 2012-05-03 09:28
kizia Temat założony przez niniejszego użytkownika |
Dynamiczne tworzenie tablicy wskaźników » 2012-05-01 10:39:29 C_Main_Field ** F_Tworz_Plansze() { C_Main_Field ** plansza = new C_Main_Field *[ Y_SIZE ]; plansza = new C_Main_Field *[ Y_SIZE ]; for( int y = 0; y < Y_SIZE; y++ ) { plansza[ y ] = new C_Main_Field[ X_SIZE ]; for( int x = 0; x < X_SIZE; x++ ) { plansza[ y ][ x ].object.push_back( Objects[ 0 ] ); plansza[ y ][ x ].set_x( x * TILE_WIDTH ); plansza[ y ][ x ].set_y( y * TILE_HEIGHT ); } } return plansza; } C_Main_Field ** M_Tiles; M_Tiles = F_Tworz_Plansze();
Program sie kompiluje ale sie sypie od razu. Gdzie problem? |
|
akwes |
» 2012-05-01 10:57:01 plansza[ y ][ x ].object.push_back( Objects[ 0 ] ); plansza[ y ][ x ].set_x( x * TILE_WIDTH ); plansza[ y ][ x ].set_y( y * TILE_HEIGHT );
Twój program bez tego działa. Nie wiem czym są Objects bo wyglądają na tablice globalną, ale to chyba z nimi jest problem, bo bez tych trzech linijek kod normalnie się wykonuje. Zakomentują tamtą linię i powiedz czy dalej jest ten błąd. |
|
kizia Temat założony przez niniejszego użytkownika |
» 2012-05-01 11:22:41 Jednak ten post nie powinenem wcale powstać, bo w tym kodzie jest wszystko w porządku, a błąd miałem dużo dużo dalej, także sorry memory :** |
|
kizia Temat założony przez niniejszego użytkownika |
» 2012-05-01 18:32:00 Mam jeszcze pytanie czy to zwalnianie pamięci jest poprawne dla powyższej tablicy for( int i = 0; i < Y_SIZE; i++ ) { delete M_Tiles[ i ]; } delete[] M_Tiles;
|
|
Admixior |
» 2012-05-01 21:21:28 //popełniłem błąd i zrozumiałem
trochę niżej wytłumaczenie //ps dzięki akwes za wytłumaczenie |
|
akwes |
» 2012-05-01 21:23:32 @Admixior, ale nie w tablicy dwuwymiarowej.
|
|
Admixior |
» 2012-05-01 21:26:22 Będę musiał zpowrotem zaglądnąć do symfonii. :) |
|
akwes |
» 2012-05-01 21:35:02 #include <iostream> #include <conio.h>
class CNiszczyciel { public: static int Count; CNiszczyciel() { std::cout << "Powstaje! Jest nas: " << ++Count << ".\n"; } ~CNiszczyciel() { std::cout << "Gine :( Zostaje: " << --Count << ".\n"; } };
int CNiszczyciel::Count = 0;
int main() { const int sX = 10; const int sY = 15; CNiszczyciel ** tab = new CNiszczyciel *[ sY ]; for( int i = 0; i < sY; i++ ) tab[ i ] = new CNiszczyciel[ sX ]; std::cout << "\nJest nas juz " << tab[ 0 ][ 0 ].Count << " niszczycieli! Czas zaczac destrukcje!\n"; for( int i = 0; i < sY; i++ ) delete[] tab[ i ]; getch(); }
|
|
« 1 » 2 |