Linux内核 kmalloc, kzalloc & devm_kzalloc 区别【转】

本文转载自:https://blog.csdn.net/u014628531/article/details/50711409

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

static inline void *kzalloc(size_t size, gfp_t flags)  
{  
    return kmalloc(size, flags | __GFP_ZERO);
}
1
2
3
4
而 devm_kzalloc() 是具有资源管理的 kzalloc()。使用资源管理(resource-managed)函数分配的内存,是会与所属设备相关联。当设备从系统中分离或者设备驱动被卸载,该内存会被自动释放。也可以通过devm_kfree()来释放内存。

posted @ 2019-01-15 16:33  请给我倒杯茶  阅读(1122)  评论(0编辑  收藏  举报