9.【linux驱动】一文看懂linux内存分配malloc、zalloc、kmalloc、kzalloc

内核空间

先上表格

分配函数释放函数分配原理大小限制/单位物理地址连续初始化为0适用场景
__get_free_pages__free_pagesbuddy4MB/页适用于分配较大量的连续物理内存
alloc_pages__free_pagesbuddy4MB/页适合需要频繁申请释放相同大小内存块时使用
kmem_cache_allockmem_cache_freeslab128KB/字节适合需要频繁申请释放相同大小内存块时使用
kmallockfreekmem_cache_alloc128kb/字节最常见的分配方式,需要小于页框大小的内存时可以使用
kzalloc/kcallockfreeslab128kb/字节最常见的分配方式,需要小于页框大小的内存时可以使用
vmallocvfreeslab无限制/字节可能睡眠,不能从中断上下文中调用,或其他不允许阻塞情况下调用。VMALLOC区域vmalloc_start~vmalloc_end之间,vmalloc比kmalloc慢,适用于分配大内存。
dma_alloc_coherentdma_free_coherent__alloc_pages4MB/字节DMA操作
ioremapiounmap物理地址到虚拟地址映射字节/需要操作物理地址的时候
alloc_bootmem/物理地址到虚拟地址映射字节/在启动kernel时,预留一段内存,内核看不见
用户空间
分配函数释放函数单位物理地址连续初始化为0适用场景
mallocfree堆申请/字节适用于分配较大量的连续物理内存
callocfree堆申请/字节适用于分配较大量的连续物理内存
alloca自动栈申请/字节适用于分配较大量的连续物理内存
mmapmunmap字节/吧文件映射到虚拟地址上
  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值