logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

C++: Jak poprawnie zwolnić pamięć po new int[LiczbaOb][30] dla int (*Tablica)[30]?

Oliczka 19 Cze 2007 19:41 3260 3
REKLAMA
  • #1 4000478
    Oliczka
    Poziom 2  
    Posty: 2
    Witam!

    Piszę program, który wykorzystuje tablice dynamiczne i... mam problem ;)


    Jeśli mam globalną:
    int (*Tablica)[30];

    potem przydzielam pamięć:
    Tablica = new int[LiczbaOb][30];

    to jak mam tę pamięć na końcu zwolnić?


    Z góry dziękuję za pomoc :)
  • REKLAMA
  • #2 4000561
    Terminator
    Poziom 23  
    Posty: 392
    Pomógł: 65
    Ocena: 12
    delete [] Tablica
    Kompilator DevC++ jak i VSC++ nie protestują :)
  • REKLAMA
  • #3 4001262
    Oliczka
    Poziom 2  
    Posty: 2
    Dziękuję ;) (choć przy takim rozwiązaniu program sam w sobie się coś 'pluł')

    Ostatecznie wybrałam trochę inną wersję:

    Globalnie:
    int **Tablica;

    Przydzielam pamięć:
    Tablica = new int*[LiczbaOb];
    Tablica[0] = new int[LiczbaOb*30];
    for(int i = 1 ; i < LiczbaOb ; i++)
    Tablica[i] = Tablica[i-1] + 30;

    i zwalniam:
    delete []Tablica;


    I wszystko jest - chyba - ok ;->

    Pozdrawiam
  • #4 4002127
    mnpa99
    Poziom 11  
    Posty: 7
    Pomógł: 1
    Tak dla "usystematyzowania sprawy" przyklad ponizej...
    pozdrawiam

       int **array;
       static const int Rows = 6;
       static const int Cols = 8;
    
       array = new int*[Rows];
    
       if (array != NULL) { 
          for (int i = 0; i < Rows; i++) 
          { 
             array[i] = new int[Cols]; 
          } 
       }
    
       for (int i = 0; i < Rows; i++) 
       { 
          delete [] array[i]; 
       } 
       delete [] array; 
REKLAMA