Kernel
解除安裝後核心模組中未釋放的記憶體會怎樣?
假設我在模組上呼叫
kmalloc
之前呼叫並且沒有釋放該記憶體rmmod
,那麼該記憶體會發生什麼?它是記憶體洩漏並且在重新啟動之前完全無法使用,還是核心會自動釋放該記憶體?謝謝
在明確完成之前,它不會被釋放。分配的記憶體
kmalloc()
需要使用kfree()
. 那段記憶體會一直保留到系統啟動為止。$$ … $$
rmmod
在模組上呼叫之前沒有釋放該記憶體$$ … $$當你這樣做時
rmmod
,module_exit()
將在你可以釋放記憶體的地方執行,以防在解除安裝模組時必須釋放記憶體。例如。x() { z = kmalloc(...) } y() { kfree(z) } module_init(x) module_exit(y)