Zwolnienie pamięci z dynamicznej tablicy dwuwymiarowej

0

tymczasowa.Tab=new double *[tymczasowa.wiersz]; //tymczasowa macierz która ma tyle wierszy co macierz
for (int i=0; i<tymczasowa.wiersz; i++) //transponowana kolumn i tyle kolumn
{ //co macierz transponowana wierszy
for (int j=0; j<tymczasowa.kolumna; j++)
{
*(tymczasowa.Tab+i)=new double [tymczasowa.kolumna];
}
}

Jak poprawnie zwolnić z niej pamięć?

0

Tak samo - w pętli ;) wywolujesz delete dla kazdego z *(tymczasowa.Tab+i), a potem dla tymczasowa.Tab.

0

Nie delete tylko delete[], to zupełnie inny operator teoretycznie.

0

Czyli jak konkretnie?

0

@Świętowit: racja, my fault.

@dziubo4: nikt Ci gotowca raczej nie poda ;> Chyba, ze pokazesz, co sam probowales wykombinowac. Takie sa zasady na tym forum.

0

[CIACH!]

Całość... nie wiem jak zwolnić miejsce po macierzy tymczasowej
Drugi i znacznie większy problem... nie wiem dlaczego po mnożeniu macierzy wyskakuje dziwna liczba
Z resztą sobie poradziłem.

0
dziubo4 napisał(a)

tymczasowa.Tab=new double *[tymczasowa.wiersz]; //tymczasowa macierz która ma tyle wierszy co macierz
for (int i=0; i<tymczasowa.wiersz; i++) //transponowana kolumn i tyle kolumn
{ //co macierz transponowana wierszy
for (int j=0; j<tymczasowa.kolumna; j++)
{
*(tymczasowa.Tab+i)=new double [tymczasowa.kolumna];
}
}

Jak poprawnie zwolnić z niej pamięć?

operator new jest w zbyt głębokiej pętli for. Efekt jest taki, że alokujesz tymczasowa.kolumna ilość tego samego wiersza.

0

Przykład deklaracji i usuwania dynamicznej tablicy dwuwymiarowej:

    int **tab = new int* [ w ];
	
	for( int i = 0; i < w; ++i )
		tab[ i ] = new int[ h ];
	
	for( int i = 0; i < w; ++i )
		delete [] tab[ i ];
	
	delete [] tab;

Ty podczas twojej deklaracji masz zagnieżdżone dwie pętle co jest błędne. Powinieneś stworzyć sobie najpierw dynamiczną tablice wskaźników, a następnie przechodzisz po niej i proces ten powtarzasz dla każdego elementu tej tablicy.

0

http://4programmers.net/C/Tablice_i_wskaźniki,_skomplikowana_składnia
Tutaj znajdziesz kilka typowych łamanych tablic dynamicznych, wraz z pełna alokacja i pełnym zwalnianiem. obejrzyj, przemysl, i sam sobie odpowiedz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1