[英]Resource Consumption of MALLOC in a C Application
我正在編寫一個C應用程序,我使用malloc在堆上創建數據。 現在,當應用程序處於活動狀態時,此數據始終是持久的,因此我永遠不會“釋放”Malloc數據。
我的問題是:當應用程序終止時,是否會自動釋放此內存,或者我必須在完成應用程序時手動執行free()?
這是實現定義的。 嚴格按照C標准,你應該free
所有你已經malloc
“d應用程序終止之前。
但是,任何現代通用操作系統都會在您之后進行清理,因此這僅適用於某些嵌入式,老式或其他異域環境。
作為一種風格,嘗試free
每個分配的塊。 它讓你養成編寫干凈代碼和防止內存泄漏的習慣。
它將被釋放。 這是“過程”抽象的奇跡。 此運行進程擁有的所有資源和內存在終止時釋放。
請注意,花了一些時間才能提出這種抽象,但對於一個系統來說,這是一個非常好的沙箱。 事實上,殺戮過程甚至被用來作為最后的手段來嘗試修復在執行數天時出現泄漏或性能下降的錯誤程序(它的名稱為“Process Rejuvenation” ,甚至存在於會議和期刊中) ,但實際上是一個糟糕的設計或編碼的准入)。
你永遠不應該明確free
這樣的記憶。 它充其量只會給你帶來任何好處,最糟糕的是它會將大量換出的數據交換回內存,只是為了檢查一些簿記指針然后丟棄它,無緣無故地摧毀用戶的硬盤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.