LwIP 代码分析(memp内存管理代码提取) – 第十六集

/ 0评 / 0

memp是属于简单的,固定大小,快速的malloc机制.比如如下的,能每次申请到64字节的可用空间.

struct memp
{
    struct memp *next;
};
uint8_t mem_memory[350];
struct memp *mem_tab = NULL;
void mem_init(void)
{
    uint8_t i = 0;
    struct memp *memp = (struct memp *)mem_memory;
    for (i = 0; i < 5; ++i)
    {
        memp->next = mem_tab;
        mem_tab = memp;
        memp = (struct memp *)(void *)((uint8_t *)memp + 64);
    }
}
void *mem_malloc(void)
{
    struct memp *memp = mem_tab;
    if (memp != NULL)
    {
        mem_tab = memp->next;
        return ((uint8_t *)memp);
    }
    return NULL;
}
void mem_free(void *mem)
{
    struct memp *memp;
    memp = (struct memp *)(void *)((uint8_t *)mem);
    memp->next = mem_tab;
    mem_tab = memp;
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注