[C++] Usun tablice dynamiczna

0

Mam pytanie. Czy jest możliwość usunięcia zmiennej (tablicy) dynamicznej deklarowanej w funkcji po returnie. Jeśli nie to w jaki inny sposób mogę to zrealizować (jakieś pomysly). Np.

int **funkcja(...){
int **tab;
...
...
return tab;
}
//Jak usunąć zmienna tab?
Mam wyciek pamieci. Jednym wyjściem jest ustawienie jako parametr funkcji tablicy do której od razu zostaną przypisane wartości, wtedy nie musze zwracac żadnej tablicy tylko zrobić void(przykladowo).

0
int* func(size_t x) {
    return new int[x]; // tworzymy i zwracamy wskaźnik do tablicy
}

int main() {
    int* tab = func(10); // używamy funkcji zwracającej tablicę dynamiczną
    // Blubry Starego Marycha
    delete [] tab; // usuwamy tablicę dynamiczną zwróconą przez funcję
}
0
int main()
...
func(10)                // i mamy kolejny wyciek :)

Ja proponuje przesyłać do funkcji wskaźnik i dla takiego wskaźnika zaalokować pamięć o wielkości size.
Znacznie ograniczy się sytuacje wycieku, oczywiście nadal trzeba pamiętać o zwolnieniu jej, bo kompilator nie przepuści wywołania bez podania wskaźnika jako argumentu funkcji.
A w wersji w poście powyżej można się zapomnieć i nie przypisać rezultatu do niczego.

0

Watpliwa sprawa biorac pod uwage jedyna funkcjonalnosc funkcji

0

a z resztą, jak chcesz takie cuda wydziwiać to użyj std::vector.

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