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