malloc free 函数

更多Linux内核驱动开发教程,《Linux内核编程》1~12期,请点击:王利涛老师个人淘宝店:Linux内核编程

在用户空间申请和释放一个动态内存,我们最常用的是malloc/free这组函数。
malloc/free是C标准库中定义的接口函数,在使用之前,我们一般需要包含头文件:

#include <stdlib.h>

void *malloc(size_t size);
void free(void *ptr);

参数size表示申请的内存大小,单位为:字节。若申请失败,返回值为NULL,若申请成功,返回值是一个void指针。
void指针在新的C语言标准中,代替了char *指针,成为新的通用类型指针。通用类型指针在和其他类型的指针转换时,可以自动转换,不需要我们强式转换了。因此,当我们使用malloc申请各种类型的内存时,只需要定义好指定类型的指针就可以了,然后保存malloc返回的指针即可。

#include <stdlib.h>

int main(void)
{
    char *p;
    int *q;

    p = malloc(100);
    q = malloc(100);

    free(p);
    free(q);

    return 0;
}

malloc是从heap上申请内存,这些内存需要程序员自己申请,自己释放。因此,在使用完内存后,要记得使用free释放掉,将这些内存归还给系统,否则就会产生内存泄露。

驱动开发核心理论,Linux内核开发入门实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,详情点击:王利涛老师个人淘宝店:Linux内核编程