モジュールを呼び出したが、kmalloc
モジュールを呼び出す前にメモリを解放しなかったと仮定すると、メモリはどうなりますか?rmmod
メモリが漏れて再起動するまで完全に使用できませんか?それともカーネルはそのメモリを自動的に解放しますか?
ありがとう
答え1
明示的に完了するまでリリースされません。割り当てられたメモリをkmalloc()
解放する必要がありますkfree()
。このメモリはシステムが起動するまで保持されます。
rmmod
[...] モジュールを呼び出す前にメモリは解放されません。 [...]
rmmod
これにより、module_exit()
モジュールがアンロードされたときにメモリを解放する必要がある場合に備えて、メモリを解放できる場所で実行されます。例えば。
x() {
z = kmalloc(...)
}
y() {
kfree(z)
}
module_init(x)
module_exit(y)