/ / c ++ wyciek pamięci i pamięć śmieci - c ++, zarządzanie pamięcią, wycieki pamięci

c ++ wyciek pamięci i pamięć śmieci - c ++, zarządzanie pamięcią, wycieki pamięci

Widzę, że jeśli dynamicznie przydzielamy pamięćw c ++, ale nie radzimy sobie z tym poprawnie, możemy mieć pamięć na śmieci, a zasadniczo możemy uzyskać przeciek pamięci i jasne jest, dlaczego tak się dzieje. Ponieważ, na przykład, mamy wskaźnik wskazujący adres pamięci, a my przypisujemy ten wskaźnik do innej przestrzeni adresowej przed uwolnieniem bieżącego adresu, to jest problem. Ale nie rozumiem, że możemy powiedzieć, że mamy zły program, który wciąż dodaje pamięć śmieci, ale jak to wszystko wraca do normy, kiedy zamykamy program. Jeśli na przykład mamy pamięć śmieci, która została wprowadzona za pomocą programu c ++, więc nie ma już wskaźnika wskazującego na tę pamięć śmieci, i jak to się dzieje po zamknięciu programu, cała pamięć śmieci jest uwolniona? W jaki sposób program wie, jak czyścić pamięć śmieci przed zamknięciem programu?

Odpowiedzi:

3 dla odpowiedzi № 1

Nie ma pamięci śmieci, to nie jest twój programktóry przydziela i zwalnia pamięć. Jest to podstawowy os. Pracujesz nad systemem operacyjnym, korzystając z jego usług. Pamięć sterty i wolny sklep to tylko abstrakcja, którą zapewniają te usługi (wśród innych abstrakcji takich plików, "ja" jestem jedynym procesem działającym w tym unikalnym procesorze ", itp.)


1 dla odpowiedzi nr 2

W systemie operacyjnym Windows system operacyjny czyści pamięć przydzieloną przez proces. Tak więc, w zasadzie wyrzuca przestrzeń, która została przekazana procesowi, nie dbając o to, co zawiera.