Dynamiczna alokacja do wskaźnika na kilkuelementową tablicę

0

Z pewnych względów nie mogę posłużyć się akurat int** i alokacją w pętli do poszczególnych wskaźników i przydałby mi się taki znany z C(chyba!) sposób dynamicznej alokacji "dwuwymiarowych" tablic (tylko tym razem z new, a nie mallociem).

int (*arr) [size] = new int [size] [size];

Niestety nie mam pojęcia, ani nie mogę znaleźć w internecie odpowiedzi jak zwolnić tak przydzieloną pamięć. Próbowałem delete [] arr oraz delete arr, ale valgrind zawsze wypisuje "2 allocs, 1 frees". W C wystarczyło zrobić free(arr) z tego co pamiętam, gdy pamięć była tak przydzielana. A może nie powinienem przypisywać wyniku new int[size][size], do takiego wskaźnika?

2

jak używasz C++ to używaj C++:

vector<vector<int>> tb(size,vector<int>(size));

2

W C nie możesz od razu zaalokowac tablicy i tablic w jej elementach. W C, jeśli nie chcesz pętli, alokujesz jedną dużą tablicę i tłumaczysz indeksy:

int *tab = malloc (w*h);

// Element x,y

tab[x+y*w]

W C++ też można tak zrobić, popieram jednak sugestię odnośnie vectora, chyba że masz dobry powód żeby tego nie robić. Jednak sądząc po poście, nie masz. :P

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