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);

 

你可能感兴趣的:(linux)