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

New i delete

Ostatnio zmodyfikowano 2015-03-30 23:27
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
New i delete
» 2015-03-30 20:14:07
Hej. Chciałbym spytać, czy poprawnie zwalniam za pomocą operatora delete pamięć w poniższym kodzie? Czy faktycznie zwalniam za pomocą dwukrotnego użycia delete pamięć zarezerwowaną dla tablicy dwuwymiarowej przy użyciu operatora new int?

C/C++
int main()
{
    int n, k, C;
   
    printf( "Prosze podaj rozmiar tablicy dwuwymiarowej." );
    printf( " Wiersze n = " );
    std::cin >> n;
    printf( "Kolumny k = " );
    std::cin >> k;
   
    int ** X = new int *[ n ];
    for( int i = 0; i < n; i++ )
    {
        X[ i ] = new int[ k ];
    }
   
   
    dane( & n, X );
    pisz_tab( & n, X );
    zamiana( & n, X );
    pisz_tab( & n, X );
   
    getch();
    delete[] X;
    delete[] * X;
   
    return 0;
   
}
P-129589
pekfos
» 2015-03-30 21:23:48
Nie.
P-129595
michal11
» 2015-03-30 21:36:50
Tablice wielowymiarowe dealokuje się w odwrotnej kolejności co ich alokacja.
P-129599
Anim
Temat założony przez niniejszego użytkownika
» 2015-03-30 22:09:16
Serdecznie dziękuję za odpowiedź : "NIE" ;p Bardzo pomocna ;p

Chyba już wiem. W taki sposób (?) :

C/C++
for( int i = 0; i < n; ++i )
{
    delete[] X[ i ];
}
delete[] X;
X = NULL;
P-129603
michal11
» 2015-03-30 23:27:33
Wygląda ok. Nullowanie nie jest konieczne.
P-129607
« 1 »
  Strona 1 z 1