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

Dynamiczne tworzenie tablicy wskaźników

Ostatnio zmodyfikowano 2012-05-03 09:28
Autor Wiadomość
kizia
Temat założony przez niniejszego użytkownika
Dynamiczne tworzenie tablicy wskaźników
» 2012-05-01 10:39:29
C/C++
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?
P-55716
akwes
» 2012-05-01 10:57:01
C/C++
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.
P-55717
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 :**
P-55719
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
C/C++
for( int i = 0; i < Y_SIZE; i++ )
{
    delete M_Tiles[ i ];
}
delete[] M_Tiles;
P-55752
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
P-55763
akwes
» 2012-05-01 21:23:32
@Admixior, ale nie w tablicy dwuwymiarowej.
P-55764
Admixior
» 2012-05-01 21:26:22
Będę musiał zpowrotem zaglądnąć do symfonii. :)
P-55765
akwes
» 2012-05-01 21:35:02
C/C++
#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";
   
    /* Wersja 1 */
    //delete [] tab; blad, nic sie nie dzieje
   
    /* Wersja 2 */
    for( int i = 0; i < sY; i++ )
         delete[] tab[ i ];
   
    getch();
}
P-55766
« 1 » 2
  Strona 1 z 2 Następna strona