常见内存分配函数
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

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

被折叠的 条评论
为什么被折叠?



