5.1. 动态内存申请

动态内存申请是指在软件生命周期内可以动态的向系统堆中申请和释放内存。

5.1.1. malloc

  • 函数原型:

    void *malloc(size_t size);
    
  • 功能说明:从堆中申请一块虚拟内存

  • 参数说明:

    参数

    说明

    size

    申请内存大小,单位:byte

  • 返回值:

    非NULL

    申请到的内存地址

    NULL

    申请失败

  • 示例:

    1void memory_foo(void)
    2{
    3    int *ptr = malloc(200);
    4    //写内存
    5    memset(ptr, 0x5A, 200);
    6}
    

5.1.2. zalloc

  • 函数原型:

    void *zalloc(size_t size);
    
  • 功能说明:从堆中申请一块虚拟内存,并将内存的数据清0

  • 参数说明:

    参数

    说明

    size

    申请内存大小,单位:byte

  • 返回值:

    非NULL

    申请到的内存地址

    NULL

    申请失败

  • 示例:

    1void memory_foo(void)
    2{
    3    int *ptr = zalloc(200);
    4    //读内存,全0
    5    put_buf(ptr, 200);
    6}
    

5.1.3. free

  • 函数原型:

    void free(void *mem);
    
  • 功能说明:从堆中释放一块虚拟内存,与malloc和zalloc成对使用

  • 参数说明:

    参数

    说明

    mem

    使用malloc和zalloc申请的指针

  • 返回值:无

  • 示例:

    1void memory_foo(void)
    2{
    3    int *ptr = zalloc(200);
    4    //读内存,全0
    5    put_buf(ptr, 200);
    6    free(ptr);
    7}