Linux内核 kmalloc, kzalloc & devm_kzalloc 区别

来源:互联网 发布:js判断对象是否为数组 编辑:程序博客网 时间:2024/05/29 03:32

首先,kzalloc()实现了kmalloc()+memset()的功能 
源码如下:

static inline void *kzalloc(size_t size, gfp_t flags)  {      return kmalloc(size, flags | __GFP_ZERO); }

而 devm_kzalloc() 是具有资源管理的 kzalloc()。使用资源管理(resource-managed)函数分配的内存,是会与所属设备相关联。当设备从系统中分离或者设备驱动被卸载,该内存会被自动释放。也可以通过devm_kfree()来释放内存。