• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zwalnianie pamięci - Rekurencja

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
+1 głos
194 wizyt
pytanie zadane 19 lipca 2016 w C i C++ przez SebekMakaron Obywatel (1,290 p.)
edycja 20 lipca 2016 przez SebekMakaron

Witam chce poznać opinie kogoś o większym doświadczeniu jeżeli to możliwe czy ten kod poprawnie usuwa "Liste powiązaną" za pomocą rekurencji.

#include <iostream>
#include <cstddef>

using namespace std;

struct Obiekt
{
     int index;
     Obiekt* w_obiekt;
};

Obiekt* DodajNowy(Obiekt* w_lista, int id)
{
     Obiekt* nowyObiekt = new Obiekt;
     nowyObiekt->index = 0;
     nowyObiekt->w_obiekt = w_lista;
     return nowyObiekt;
}

void Usun(Obiekt* w_lista);

int main()
{
     Obiekt* wrog = NULL;

     for(int i=0; i<5; i++)
     {
          wrog = DodajNowy(wrog, i);
     }

     Usun(wrog);

     delete wrog;
     wrog = NULL;

     return 0;
}

void Usun(Obiekt* w_lista)
{
     if(w_lista == NULL){
          return;
     }
     else
          Usun(w_lista->w_obiekt);

     delete w_lista;
     w_lista = NULL;
}

Osobiście wydaje mi się że jest to poprawne rozwiązanie lecz z tą pamięcią nigdy nic nie wiadomo a mój aktualny poziom nie jest w stanie w 100% stwierdzić że to jest rzeczywiście poprawny kod.

Z góry dziękuje za wyświetlenie tego tematu.

Dzień później doszłem do wniosku że ten kod jest zły i stworzyłem taki:

Obiekt* Usun(Obiekt* w_lista);

int main()
{
     Obiekt* wrog = NULL;

     for(int i=0; i<5; i++)
     {
          wrog = DodajNowy(wrog, i);
     }
     wrog = Usun(wrog);

     delete wrog;
     wrog = NULL;

     return 0;
}

Obiekt* Usun(Obiekt* w_lista)
{
     if(w_lista != NULL)
          Usun(w_lista->w_obiekt);

     delete w_lista;
     w_lista = NULL;

     return w_lista;
}

Części której brakuje od góry jest taka sama

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,302 wizyt
pytanie zadane 11 maja 2017 w C i C++ przez Isild Użytkownik (620 p.)
0 głosów
0 odpowiedzi 270 wizyt
pytanie zadane 25 kwietnia 2018 w C i C++ przez damianoom Nowicjusz (240 p.)
0 głosów
1 odpowiedź 2,193 wizyt

93,433 zapytań

142,428 odpowiedzi

322,661 komentarzy

62,796 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...