动态申请内存函数差异

  • vmalloc
    分配的内存只是线性地址连续,物理地址不一定连续,不能直接用于DMA

  • kmalloc
    分配的内存是线性地址和物理地址都是连续的,可以直接用于DMA

  • 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() 来释放内存。同理 socket_kzalloc() 等等。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容