内存分配函数malloc,vmalloc,kmalloc的区别
时间: 2023-10-29 08:33:56 浏览: 90
kmalloc()和vmalloc()的区别
这三个函数分别是在不同的内存池中分配内存:
1. malloc:在进程的用户空间内存池中分配内存,用于分配小块内存,通常在 malloc 中分配的内存大小不超过几百 KB,它的实现是基于内核中的 brk 和 mmap 系统调用。
2. kmalloc:在内核内存池中分配内存,用于分配小块内存,通常在 kmalloc 中分配的内存大小也不超过几百 KB。kmalloc 相比于 malloc,它的实现更加高效,因为它会对内存进行高速缓存,以加快内存的分配和释放速度。
3. vmalloc:在内核虚拟内存池中分配内存,用于分配大块内存,通常在 vmalloc 中分配的内存大小可以达到数 GB。vmalloc 相比于 kmalloc,它的实现更加灵活,因为它可以不连续地分配内存,但是它的分配和释放速度会比 kmalloc 慢一些。
综上所述,这三个内存分配函数的区别主要在于:分配内存的内存池不同、适用的内存大小不同、分配的内存是否连续等。应该根据具体的需求选择合适的分配函数。
阅读全文