常见内存分配函数

本文介绍了几种常见的内存分配函数,包括kmalloc用于内核空间分配物理和虚拟内存,kmalloc与kzalloc的区别在于kzalloc会进行初始化,vmalloc则在虚拟内存中分配较大区域但物理内存不连续,__get_free_page为物理和虚拟内存连续的分配,以及用户空间的malloc和calloc,malloc仅分配内存,calloc则会初始化为0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见内存分配函数


1 . kmalloc 内核函数

#include <linux/slab.h> 
void *kmalloc(size_t size, int flags);//最大为 128k
void kfree(void *ptr);

kmalloc分配一块物理空间和虚拟空间都连续,大小为size的内存。
常用的flags标志有:
GFP_ATOMIC
用来从中断处理和进程上下文之外的其他代码中分配内存. 从不睡眠.
GFP_KERNEL
内核内存的正常分配. 可能睡眠.最常用的,(内部最终调用 __get_free_pages)
GFP_USER
用来为用户空间页来分配内存; 它可能睡眠.
例如: P=(int*)kmalloc(n*sizeof(int),GFP_KERNEL);//返回值是一个指向内存开始的指针


2 . kzalloc 内核函数

#include <linux/slab.h>
void *kzalloc(size_t size, gfp_t flags);
void kf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值