Niezwolnienie pamięci
Ostatnio zmodyfikowano 2016-09-14 16:39
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. 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? |
|
pekfos |
» 2016-09-14 13:29:06 |
|
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, [...]. |
|
|
« 1 » |