Ben malloc()
fonksiyonu kullanarak bellek ayırma kodu içeren bir C programı yazdım . Bu free()
işlevi kullanarak belleği boşaltmazsam, Ubuntu otomatik olarak serbest bırakır mı?
Ben malloc()
fonksiyonu kullanarak bellek ayırma kodu içeren bir C programı yazdım . Bu free()
işlevi kullanarak belleği boşaltmazsam, Ubuntu otomatik olarak serbest bırakır mı?
Yanıtlar:
Evet.
Çekirdek, programın sona ermesi üzerine bir program tarafından ayrılan tüm kaynakları serbest bırakır.
Bu, do_exit()
içinde tanımlanan işlev kernel/exit.c
yürütülmesini sonlandırdıktan sonra yapılır ; do_exit()
fonksiyonu yürütme kendisi etkinlikleri sayısına göre tetiklenebilir, en yaygın olarak, açık bir tarafından exit()
düzenli hesaplama sırasında veya örtük bir programa göre adlandırılan sistem çağrısı exit()
Cı derleyici yerleştirir olarak sona ermesi üzerine program tarafından adlandırılan sistem çağrısı ( exit()
syscall sonra main()
s' dönüş). Diğer nedenler, değiştirilemez / ihmal edilemez bir sinyalin veya istisnanın alınmasını içerir.
do_exit()
Kendisi işlevi bir dizi görev yapar. Yürütülmesinin sona ermesinden sonra, programın ayrılan kaynakları çekirdek tarafından serbest bırakılır ve daha sonra kullanılmak üzere sisteme geri gönderilir.