假设我调用了该模块,但在调用该模块kmalloc
之前没有释放该内存,那么该内存会发生什么情况?rmmod
是内存泄漏并且在重新启动之前完全无法使用,还是内核会自动释放该内存?
谢谢
答案1
在明确完成之前它不会被释放。分配的内存kmalloc()
需要使用 释放kfree()
。这块内存会一直保留到系统启动为止。
rmmod
[...]在模块上调用之前没有释放该内存[...]
当您这样做时rmmod
,module_exit()
将在您可以释放内存的地方执行,以防在卸载模块时必须释放内存。例如。
x() {
z = kmalloc(...)
}
y() {
kfree(z)
}
module_init(x)
module_exit(y)