linux内核常用的内存申请函数

在读驱动程序时,常遇到内存申请函数。驱动程序属于内核空间,和用户空间用到的内存申请函数不同。

内核空间最常用到的内存申请函数为kmalloc()和kzalloc()。

kmalloc()是申请一段内存空间Kernel memory allocation,并且这段内存空间是物理上连续的。

kmalloc()后常跟memset()使这段内存空间全清为0。kzalloc()申请了内存空间并且清0,z表示zero,

所以kzalloc()=kmalloc()+memset()。

kmalloc()原型:

kmalloc(size_t s,gfp_t flags)

实例:

data=kmalloc(datasize,GFP_KERNEL);

memset()原型:

void *memset(void *s,int c,size_t count)

实例:

memset(data,0,datasize)

kzalloc()原型:

static inline void *kzalloc(size_t s,gfp_t flags)
{
return kmalloc(size_t s,flags | _GFP_ZERO);
}

实例:

data=kzalloc(datasize,GFP_KERNEL)

内核空间还有几个内存申请函数vmalloc()。vmalloc()申请到的内存空间是可以物理上不连续的。
原型:void *vmalloc(unsigned long size)
使用:data=vmalloc(size)

在写应用程序的时候常用到malloc()
static void *malloc(int size)

data=malloc(size);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值