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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值