To jest subiektywne/dyskusyjna.
Moim zdaniem istnieją dwa poziomy zasobów (pamięć jest jednym z zasobów zapewnionych przez system operacyjny) przecieki: poziom systemu operacyjnego i poziom aplikacji. Zwróć uwagę, że nazwy są niestandardowe i może być lepiej dla nich odpowiedni termin techniczny.
Przecieki na poziomie aplikacji przestają istnieć po zakończeniu aplikacji, ponieważ system operacyjny czyści bałagan aplikacji. To znaczy. gdy aplikacja zostanie nukowana, zagrożenie dla stabilności systemu zniknęło. W przyzwoitym systemie operacyjnym alokacje pamięci w aplikacjach mogą powodować wyciek "na poziomie aplikacji".
Nieszczelność na poziomie systemu operacyjnego nie przestaje istnieć po zakończeniu aplikacji. Zwykle inne zasoby należą do tej kategorii (pliki), ale nie do pamięci. Nie mogę jednak zagwarantować, że nie ma systemu/platformy, która nie wyczyści wyciekanej pamięci. Według prawa Murphy'ego taka platforma jest używana do dziś.
Więc kiedy powiedzieć/napisać „wyciek pamięci” Mówię o przecieku na poziomie aplikacji - dowolny alokacji pamięci, który nie został wyraźnie usunięty przez APP. Każda alokacja, nawet intencjonalna, należy do kategorii. Ponadto, zwykle profilery alokacji pamięci i podobne narzędzia będą narzekać na twoje "celowe wycieki",
Tak, tak, twój kod ma wyciek.
Moim zdaniem, przeciekanie nawet celowo, nawet jeśli masz pewność, że OS je zwolni, jest złym pomysłem, ponieważ zachęca do niechlujnego kodowania i pewnego dnia nie uda ci się usunąć klasy, która uwalnia coś ważnego w swoim destruktor, który nie może być automatycznie czyszczony przez system operacyjny. Biorąc pod uwagę ilość śmieci pozostawionych w rejestrze systemu Windows i folderze plików tymczasowych na przeciętnym komputerze, wielu programistów rutynowo używa tej techniki do zasobów, które nie są prawidłowo usuwane przez system operacyjny. Najlepszym pomysłem byłoby uniknięcie wycieków.
Przeciek pamięci to po prostu pamięć, którą przydzielasz, ale nie za darmo. –
@JoachimPileborg to właśnie mówię w nieudanej dyskusji. James mówi, że to stopniowa utrata pamięci. Nie mogłem znaleźć żadnych satysfakcjonujących źródeł. –
@ Joachim, który jest zbyt prosty. Przydzielona pamięć jest zgodnie z twoją definicją już przeciek pamięci –