kmalloc、vmalloc、malloc、calloc的区别
生活随笔
收集整理的這篇文章主要介紹了
kmalloc、vmalloc、malloc、calloc的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.kmalloc和vmalloc是分配的是內核的內存,malloc、calloc分配的是用戶的內存;
2.kmalloc保證分配的內存在物理上是連續的,vmalloc保證的是在虛擬地址空間上的連續,malloc不保證任何東西;
3.kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相對較大;
4.內存只有在要被DMA訪問的時候才需要物理上連續;
5.vmalloc比kmalloc要慢;
6.calloc分配好內存后會自動初始化為0,其他則分配好內存后保持著原有數據;
7.函數原型:
malloc (size_t size);
calloc(size_t numElements,size_t sizeOfElement);有兩個參數,分別為元素的數目和每個元素的大小,這兩個參數的乘積就是要分配的內存空間的大小。
void *kmalloc(size_t size, int flags);
?
總結
以上是生活随笔為你收集整理的kmalloc、vmalloc、malloc、calloc的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 内存映射函数 mmap()函
- 下一篇: 汇编指令:LDM、STM详解