Dynamiczna tablica dwuwymiarowa

0

Co robi program : tworzy macierz, której każdy kolejny wiersz jest pomniejszony o 1 kolumne.
Chciałem się zapytać czy takie rozumowanie jest poprawne podczas tworzenie tej macierzy.
Tworzymy tablice wskaźników(odpowiedzialnosc za ilosc Wierszy), gdzie każdy jej element (wskaźnik), będzie początkiem nowej tablicy(odpowiedzialna za ilosc Kolumn) .

 
#include <iostream>

using namespace std;

int main()
{
    int arrayLine;
    cout << "Podaj wiersze macierzy: ";
    cin >> arrayLine;
    int tmp = arrayLine;
    int** twoDimension = new int*[arrayLine];
    for(int i = 0 ; i < arrayLine; i++)
    {
        twoDimension[i]= new int[tmp];
        tmp--;
    }
    int counT = arrayLine;
    const int constant = 0;
    int tmp2 = arrayLine;
    for(int i = 0 ; i < counT;i++)
    {
         tmp2=arrayLine-i;
        for(int j = 0 ; j < tmp2; j++ )
        {
            twoDimension[i][j]=constant;
            cout << twoDimension[i][j] << " ";
        }
        cout << endl;
    }
    for(int i = 0 ; i < counT ; i++)
    {
        delete[]twoDimension[i];
    }
    delete[]twoDimension;
    return 0;
}

Niby nie wywala mi błędów ale nie rozumiem tego zwalniania pamięci(w pętli) mi się wydaje, ze jest zle bo zwalniania jest tu pamieć jedynie z jednego wiersza macierzy, i w tym przypadku zawsze o rozmiarze która podał użytkowników. (czyli zwalniana jest pamięć z 1 wiersza). Nie dosyć,że z jednej tej tablicy to jeszcze nawet jakby jakos szło to do kolejnego wiersza to nie uwzględnia ,że każdy kolejny wiersz macierzy jest mniejszy o 1. (wiem trochę zamotałem)
Jakby ktoś mi to trochę przybliżył czy jest to złe czy jednak tak ma być BYŁBYM BARDZO WDZIĘCZNY
Natomiast na końcu usuwam tablice wskaźników czyli kolumny macierzy (to chyba ogarnąłem).

2

Niby nie wywala mi błędów ale nie rozumiem tego zwalniania pamięci(w pętli) mi się wydaje, ze jest zle bo zwalniania jest tu pamieć jedynie z jednego wiersza macierzy
No niby jak? Rozpisując pętlę masz przecież

delete[] twoDimension[0];
delete[] twoDimension[1];
delete[] twoDimension[2];
delete[] twoDimension[3];
...
0

Dokładnie nie wiem jak ja na to patrzałem ;)

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