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

Automatyczne zwalnianie pamięci?

Object Storage Arubacloud
0 głosów
368 wizyt
pytanie zadane 23 kwietnia 2018 w C i C++ przez Agnes Użytkownik (990 p.)
Podobno na początku  nauki programowania nie ma głupich pytań. Więc:

Używając operatora new w C++ lub funkcji malloc() w C należy pamiętać o zwalnianiu pamięci. Ale podobno pamięć jest automatycznie i tak zwalniana, gdy program kończy działanie. Więc po co to robić i jaka jest różnica między manualnym zwolnieniem pamięci i automatycznym?

4 odpowiedzi

+3 głosów
odpowiedź 23 kwietnia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 26 kwietnia 2018 przez Agnes
 
Najlepsza
Bo system może i posprząta za Ciebie po zakończeniu procesu, ale nie robi tego w czasie jego trwania. Wyobraź sobie, że masz jakąś pętlę o bardzo dużej liczbie iteracji (niech to jest nawet pętla nieskończona) i w każdym obiegu tej pętli alokujesz dynamicznie jakieś dane. Zanim proces się zakończy, zapchasz całą dostępną pamięć.
komentarz 24 kwietnia 2018 przez Agnes Użytkownik (990 p.)
Więc teoretycznie nie byłoby właściwie różnicy gdyby nie posprzątało się np. po jednej, niewielkiej dynamicznie zaalokowanej tablicy, ale warto jest i tak to zrobić, aby mieć taki nawyk. Ok
+6 głosów
odpowiedź 23 kwietnia 2018 przez adrian17 Ekspert (344,860 p.)

 Ale podobno pamięć jest automatycznie i tak zwalniana, gdy program kończy działanie

Więc po co to robić

To trochę jak "po co wyrzucać śmieci, jak kiedyś ten dom i tak zostanie zburzony?"

Tak, tak się składa że system zazwyczaj zwalnia całą pamięć zużytą przez proces przy zamykaniu procesu. Ale jeśli kompletnie zignorujesz zwalnianie pamięci, nagle może się okazać że wyciekło Ci kilka gigabajtów, a system nie wie co z nimi zrobić i zwalnia lub zabija procesy by odzyskać trochę zasobów. No a bardziej przyziemnie, nie chcesz żeby user zaczął pytać dlaczego Twoja prosta aplikacja zajmuje mu całą pamięć.

Jest jeszcze jeden ważny aspekt: destruktory. Gdy ręcznie niszczysz dynamiczne obiekty w programie, mogą wywołać się ich destruktory, które mogą wykonywać jakieś ważne czynności (np na systemie plików). Jeśli tego nie zrobisz, system pod koniec po prostu zwolni pamięć i program może nie zostawić po sobie w pełni poprawnego stanu.

+1 głos
odpowiedź 23 kwietnia 2018 przez Knayder Nałogowiec (37,640 p.)
Można to porównać do korzystania z toalety (Uwaga niesmaczny fragment).
Nawet jak zostawisz obsrane ściany, to i tak ktoś to posprząta. Jednak nie uważa się tego za dobre zachowanie (heh java heh)
komentarz 23 kwietnia 2018 przez Hiskiel Pasjonat (22,830 p.)
edycja 23 kwietnia 2018 przez Hiskiel
Ten garbage collector to jak sprzątaczki w szkolnej szkole.
komentarz 23 kwietnia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Szkolnej szkole?
komentarz 23 kwietnia 2018 przez Hiskiel Pasjonat (22,830 p.)

chyba jestem trochę zmęczony frown

0 głosów
odpowiedź 23 kwietnia 2018 przez mokrowski Mędrzec (155,460 p.)

To wydaje się nazbyt dramatyczne, ale jest prawdziwe.

Możesz kogoś zabić jeśli nie będziesz zwalniał zasobów. Działanie aplikacji dla systemów wbudowanych, kończy się z wyłączeniem systemu.

Podobne pytania

0 głosów
0 odpowiedzi 109 wizyt
0 głosów
1 odpowiedź 477 wizyt
0 głosów
1 odpowiedź 136 wizyt

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...