linux下kmalloc cmalloc malloc的区别
时间: 2023-10-29 11:17:48 浏览: 150
在Linux中,kmalloc、kzalloc、vmalloc和malloc是四种不同的内存分配函数,它们主要用于不同的场景和目的。
首先,kmalloc是用于在内核空间中分配较小且物理上连续的内存块的函数。它分配的内存在虚拟地址空间上也是连续的。kmalloc通常用于需要物理上连续内存的情况,比如DMA操作。
kzalloc是通过在kmalloc分配的内存空间上执行memset清零操作来初始化的。这意味着kzalloc分配的所有元素都将被初始化为0。kzalloc可以看作是kmalloc和memset的结合,适用于需要分配并清零内存的情况。
vmalloc用于在虚拟地址空间中分配较大的内存空间,虚拟内存空间上的地址是连续的,但在物理上并不要求连续。vmalloc适用于需要申请大块内存的情况,例如内核中的高速缓存。
而malloc是用于在用户空间中分配内存的函数。与kmalloc和vmalloc不同,malloc用于用户空间,它通常比较快速并且不对所分配的内存进行清零操作。malloc适用于用户应用程序中分配内存的场景。
总结起来,kmalloc适用于在内核空间分配较小且物理上连续的内存,kzalloc在kmalloc的基础上进行初始化清零,vmalloc适用于分配较大的虚拟内存空间,而malloc适用于用户空间分配内存。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [linux内存管理之malloc、vmalloc、kmalloc的区别](https://blog.csdn.net/weixin_33862041/article/details/85987946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文