Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Niezwolnienie pamięci

Ostatnio zmodyfikowano 2016-09-14 16:39
Autor Wiadomość
mikim102
Temat założony przez niniejszego użytkownika
Niezwolnienie pamięci
» 2016-09-14 10:45:38
Mam takie pytanie, pewnie odpowiedź jest oczywista, ale jednak...
Tworząc dynamiczną zmienną np.
C/C++
int * p;
p = new int;
* p = 100;

Co się stanie z pamięcią jeśli jej nie zwolnie delete na koniec? Pozostaje zajęta, jeśli dobrze rozumiem. Kiedy ją odzyskam? np. po ponownym uruchomieniu komputera? Czy jest ona tracona na zawsze, co może się przyczynić do spowolnienia komputera itd?
P-151717
pekfos
» 2016-09-14 13:29:06
Kiedy ją odzyskam?
Po zamknięciu programu.
P-151721
Rashmistrz
» 2016-09-14 16:39:18
Co się stanie z pamięcią jeśli jej
nie zwolnie delete na koniec?
Nie rozumiem. Na koniec czego?
Funkcji, programu czy gdzie?

Jeśli stracisz wartość wskaźnika to nie będziesz
mógł zwolnić zaalokowanej pamięci przez program.

Taka sytuacja nazywana jest wyciekiem pamięi...

Pozostaje zajęta, jeśli dobrze rozumiem. Kiedy ją odzyskam?
Jeśli jest to wyciek pamięci to... nigdy.
Oczywiście system odzyska dla siebie
te zasoby po zamknięciu programu.

W trakcie działania programu, systemu nie interesuje czy
tą pamięć wykorzystujesz i nie rusza jej do końca działania progamu.

Czy jest ona tracona na zawsze,
co może się przyczynić do spowolnienia komputera itd?
Z Wikipedii:
Wycieki pamięci są efektem bardzo niepożądanym.
Program bowiem zajmuje coraz więcej pamięci,
ale nie jest w stanie jej wykorzystać ani zwolnić.
[...]
Sam wyciek prowadzi do spadku wydajności systemu, [...].
P-151724
« 1 »
  Strona 1 z 1