Czy Ubuntu automatycznie zwalnia pamięć przydzieloną przez program C po zakończeniu programu?
11
Napisałem program w C, zawierający kod przydzielający pamięć za pomocą malloc()funkcji. Jeśli nie zwolnię pamięci za pomocą tej free()funkcji, czy Ubuntu zwolni ją automatycznie?
Nie ma to nic wspólnego z Ubuntu, odpowiedzialnością jądra.
użytkownik
@ użytkownik: Określona wersja Ubuntu musi działać na jednej z wersji jądra Linux. Ma to więc coś wspólnego z Ubuntu, aby wiedzieć, czy jądro, na którym działa, zwalnia pamięć automatycznie, czy nie.
ashubuntu
Odpowiedzi:
16
Tak.
Jądro zwolni wszystkie zasoby przydzielone przez program po zakończeniu programu.
Odbywa się to po tym, do_exit()funkcja zdefiniowana w kernel/exit.custało jego wykonanie; do_exit()wykonanie funkcja sama może być wywołany przez szereg zdarzeń, najczęściej w wyniku jawnego exit()syscall zwanego przez program podczas jego regularnego obliczania lub niejawny exit()syscall zwanego przez program po jego zakończeniu (jak kompilator C kładzie exit()syscall po main()„s powrót). Inne powody obejmują odbiór sygnału lub wyjątku nieprzydatnego / nie do zapomnienia.
Sama do_exit()funkcja wykonuje szereg zadań. Po zakończeniu wykonywania przydzielone zasoby programu są zwalniane przez jądro i zwracane do systemu w celu dalszego wykorzystania.
Odpowiedzi:
Tak.
Jądro zwolni wszystkie zasoby przydzielone przez program po zakończeniu programu.
Odbywa się to po tym,
do_exit()
funkcja zdefiniowana wkernel/exit.c
ustało jego wykonanie;do_exit()
wykonanie funkcja sama może być wywołany przez szereg zdarzeń, najczęściej w wyniku jawnegoexit()
syscall zwanego przez program podczas jego regularnego obliczania lub niejawnyexit()
syscall zwanego przez program po jego zakończeniu (jak kompilator C kładzieexit()
syscall pomain()
„s powrót). Inne powody obejmują odbiór sygnału lub wyjątku nieprzydatnego / nie do zapomnienia.Sama
do_exit()
funkcja wykonuje szereg zadań. Po zakończeniu wykonywania przydzielone zasoby programu są zwalniane przez jądro i zwracane do systemu w celu dalszego wykorzystania.Źródło
źródło