内存管理是指软件运行时系统内存资源的分配和使用的技术。其最主要的目的是如何高效、快速的分配,并且在适当的时候释放和回收内存资源。

API列表

API名称 说明
aos_malloc() 从系统堆中分配内存给用户
aos_zalloc() 从系统堆中分配内存区域给用户,并且将分配的内存初始化为0
aos_calloc() 从系统堆中分配连续的块内存区域给用户,并且将分配的内存初始化为0
aos_realloc() 重新调整之前调用aos_malloc(aos_calloc、aos_zalloc)所分配的内存块的大小
aos_free() 释放分配的内存

aos_malloc()

定义描述
定义 描述
函数原型 void *aos_malloc(unsigned int size)
描述 从系统堆中分配size字节内存区域
参数 size:要分配内存区域的字节数
返回值 如果分配成功,返回所分配的内存区域起始地址指针;如果失败,返回NULL
调用示例
char *ptr = NULL;
unsigned int size = 64;

ptr = (char*)aos_malloc(size);
if (NULL == ptr) {
    printf("aos_malloc failed\r\n");
    ...
}

aos_zalloc()

定义描述
定义 描述
函数原型 void *aos_zalloc(unsigned int size)
描述 从系统堆中分配size字节内存区域,并将内存初始化填充0
参数 size:要分配内存区域的字节数
返回值 如果分配成功,返回所分配的内存区域起始地址指针;如果失败,返回NULL
调用示例
char *ptr = NULL;
unsigned int size = 64;

ptr = (char*)aos_zalloc(size);
if (NULL == ptr) {
    printf("aos_zalloc failed\r\n");
}

aos_calloc()

定义描述
定义 描述
函数原型 void *aos_calloc(unsigned int nitems, unsigned int size)
描述 从系统堆中分配nitems * size字节连续内存区域,并将内存区域初始化填充0
参数
  • nitems: 要分配内存区域单元个数
  • size:每个内存区域单元的字节数
返回值 如果分配成功,返回所分配的内存区域起始地址指针;如果失败,返回NULL
调用示例
char *ptr = NULL;
unsigned int size = 64;
unsigned int n = 10;

ptr = (char*)aos_calloc(n, size);
if (NULL == ptr) {
    printf("aos_calloc failed\r\n");
}

aos_realloc()

定义描述
定义 描述
函数原型 void *aos_realloc(void *mem, unsigned int size)
描述
判断mem指针是否为NULL
  • 如果mem指针为NULL,则新分配size大小的内存区域。
  • 如果mem指针非NULL,先判断原指针mem是否有足够的连续空间。
    • 如果有,扩大mem指向的地址,并且将mem指针返回。
    • 如果空间不够,按照size指定的大小分配空间(size的大小可以比原mem内存大,也可以比原mem内存小)。

在分配成功的前提下,将原有数据从mem指向的内存区域拷贝到新分配的内存区域,而后释放原来mem所指内存区域,同时返回新分配的内存区域的首地址,若分配失败,则不释放原来的内存区域,并返回NULL

对于拷贝数据的大小,如果新分配的内存区域size比原来mem指向内存区域大,则只拷贝原来mem指向内存区域长度字节数据到新分配的内存区域;否则,只拷贝size字节的数据到新分配的内存区域。

参数
  • mem: 原内存区域起始地址指针
  • size : 本次操作期望新分配的内存区域大小
返回值 如果分配成功,返回新分配的内存区域起始地址指针;如果失败,返回NULL
调用示例
char *ptr = NULL;
char *newptr = NULL;
unsigned int size = 64;

ptr = (char*)aos_malloc(size);
if (NULL == ptr) {
    printf("aos_malloc failed\r\n");
    ...
}
...
size = 100;
newptr = (char*)aos_realloc(ptr, size);
if (NULL == ptr) {
    printf("aos_realloc failed\r\n");
}

aos_free()

定义描述
定义 描述
函数原型 void aos_free(void *mem)
描述 将从系统堆中分配的内存区域释放
参数 mem:要释放的内存区域起始地址指针
返回值
调用示例
char *ptr = NULL;
unsigned int size = 64;

ptr = (char*)aos_malloc(size);
if (NULL == ptr) {
    printf("aos_malloc failed\r\n");
    ...
}
...
if(NULL != ptr)
aos_free(ptr);