Wyciek pamięci w C, C ++; zapomniałem zrobić za darmo, usuń
Przydzielamy pamięć w C przy użyciu malloc iw C ++ przy użyciu nowego. Wiem, że przydzielona pamięć musi zostać zwolniona lub przekazana do systemu operacyjnego za pomocą darmowego C i usuń w C ++. Jeśli zapomniałem użyć free / delete po przydzieleniu pamięci, oznacza to, że nastąpi wyciek pamięci.
Moje pytanie brzmi: czy ten wyciek pamięci występuje tylko w okresie wykonywania programu; czy jest to trwały wyciek / utrata lub czy jest on ponownie uzyskiwany po ponownym uruchomieniu systemu? Jaki jest proces wewnętrzny? Co dokładnie oznacza wyciek / utrata pamięci?
Byłbym bardzo wdzięczny, gdyby ktoś mógł wyjaśnić to szczegółowo lub dostarczyć mi miłych referencji.
AKTUALIZACJA 1
Po przeczytaniu kilku odpowiedzi dowiedziałem się, że pamięć jest zwracana do systemu operacyjnego / systemu po zakończeniu programu, jeśli tak jest, dlaczego wszyscy muszą tak bardzo przejmować się wyciekiem pamięci i dlaczego zapobieganie przeciekaniu pamięci jest bardzo ważne?
AKTUALIZACJA 2
Tak więc należy zapobiec wyciekowi pamięci, aby system nie ulegał awarii z powodu braku wystarczającej ilości pamięci do celów alokacji?
AKTUALIZACJA 3
Tak więc po przeczytaniu wszystkich odpowiedzi zdałem sobie sprawę, że przeciek pamięci jest cichy, ważne kwestie zapobiegające awariom systemu. Ale dla początkującego takiego jak ja, jak mogę być pewien, czy mój program jest całkowicie wolny od wycieku pamięci. Próbuję zrobić to za darmo, usunąć, jeśli używam malloc, nowy, ale czasami robi się bałagan. Czy jest jakieś narzędzie lub metoda, której mogę użyć, aby wiedzieć, czy mój program robi wyciek pamięci?
AKTUALIZACJA 4
Po przeczytaniu odpowiedzi zrozumiałem znaczenie kodu bez przecieku pamięci, mniejsze użycie new / delete, większe wykorzystanie STL, poznanie nowych rzeczy, takich jak RAII, valgrind i dobre praktyki programowania. Dziękuje za wszystko :)