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

Zwolnienie pamięci wewnątrz funkcji

42 Warsaw Coding Academy
0 głosów
189 wizyt
pytanie zadane 28 kwietnia 2019 w C i C++ przez Alucarddo Nowicjusz (210 p.)
edycja 28 kwietnia 2019 przez Alucarddo
void uczniowie(string wpisane_imie, int wpisane_matematyka, int wpisane_fizyka )
{
    wynik_matury *osoba = new wynik_matury ;                        // <--------------------------- Chodzi o to
    osoba -> imie = wpisane_imie;
    osoba -> matematyka = wpisane_matematyka;
    osoba -> fizyka = wpisane_fizyka;
    osoba -> nastepny = lista;
    lista = osoba;

   i++;
   licznik ++;






}

Witam,
w sytuacji w której alokuję pamięć za pomocą "new" wewnątrz funkcji nie wiem jak ja potem zdealokować. Funkcja przyjmuje powiedzmy 2 argumenty, i wywołuję ją 4 razy żeby otrzymać jakieś wyniki. Funkcja main robi potem coś więcej z tymi wynikami, a na koniec programu chcę zdealokować zapisaną pamięć zmiennej która znajduje się w funkcji, tyle że poza funkcją nie mam do niej dostępu, a wewnątrz funkcji nawet gdybym dał jakiś przypadek decydujący o zwolnieniu pamięci, to musiałbym wywołać funkcję, a nie chcę mieć 5 wyniku a komplikowanie pewnie nie ma sensu i jest jakaś opcja by to zrobić, a przynajmniej mam taką nadzieję

komentarz 28 kwietnia 2019 przez niezalogowany
Kod?
komentarz 28 kwietnia 2019 przez newman Gaduła (3,440 p.)
Zwracaj z funkcji wskaźnik na przydzielona zmienna. Gdy będziesz potrzebował zrób free na tym co zwróciła funkcja.

1 odpowiedź

+1 głos
odpowiedź 28 kwietnia 2019 przez DeBos123 Nałogowiec (44,950 p.)

Zamień void na *wynik_matury oraz dodaj return osoba; na końcu funkcji.

komentarz 28 kwietnia 2019 przez Alucarddo Nowicjusz (210 p.)
to co zwraca funkcja powinno być teraz dostępne w funkcji main, mimo wszystko wciaż nie mogę usunąć "osoba" za pomocą delete, jest napisane że nie ma takiej zmiennej, nie tak się to robi ?
1
komentarz 29 kwietnia 2019 przez newman Gaduła (3,440 p.)
edycja 29 kwietnia 2019 przez newman
Musisz zrobić delete (twoja_funkcja()) lub przypisać do zmiennej to co zwróciła  i zrobićdelete wtedy kiedy będziesz potrzebował.
komentarz 29 kwietnia 2019 przez Alucarddo Nowicjusz (210 p.)
Okej, dziękuję !

Podobne pytania

0 głosów
1 odpowiedź 183 wizyt
pytanie zadane 26 kwietnia 2023 w C i C++ przez Zuzan Początkujący (390 p.)
+1 głos
2 odpowiedzi 171 wizyt
pytanie zadane 7 listopada 2016 w C i C++ przez ewazdomu Początkujący (320 p.)
0 głosów
1 odpowiedź 207 wizyt
pytanie zadane 16 lutego 2016 w C i C++ przez L33TT12 Gaduła (3,950 p.)

93,379 zapytań

142,380 odpowiedzi

322,533 komentarzy

62,734 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...