内存管理: malloc()与free()的一种基于池表结构的实现
来源:互联网 发布:热点设置软件 编辑:程序博客网 时间:2024/05/16 01:53
/** * Initialize this module. * * Carves out memp_memory into linked lists for each pool-type. */voidmemp_init(void){ struct memp *memp; u16_t i, j; memp = LWIP_MEM_ALIGN(memp_memory); /* for every pool: */ for (i = 0; i < MEMP_MAX; ++i) { memp_tab[i] = NULL; /* create a linked list of memp elements */ for (j = 0; j < memp_num[i]; ++j) { memp->next = memp_tab[i]; memp_tab[i] = memp; memp = (struct memp *)((u8_t *)memp + MEMP_SIZE + memp_sizes[i]); } }}/** * Get an element from a specific pool. * * @param type the pool to get an element from * * the debug version has two more parameters: * @param file file name calling this function * @param line number of line where this function is called * * @return a pointer to the allocated memory or a NULL pointer on error */void *memp_malloc(memp_t type){ struct memp *memp; SYS_ARCH_DECL_PROTECT(old_level); SYS_ARCH_PROTECT(old_level); memp = memp_tab[type]; if (memp != NULL) { memp_tab[type] = memp->next; memp = (struct memp*)((u8_t*)memp + MEMP_SIZE); } else { MEMP_STATS_INC(err, type); } SYS_ARCH_UNPROTECT(old_level); return memp;}/** * Put an element back into its pool. * * @param type the pool where to put mem * @param mem the memp element to free */voidmemp_free(memp_t type, void *mem){ struct memp *memp; SYS_ARCH_DECL_PROTECT(old_level); if (mem == NULL) return; memp = (struct memp *)((u8_t*)mem - MEMP_SIZE); SYS_ARCH_PROTECT(old_level); memp->next = memp_tab[type]; memp_tab[type] = memp; SYS_ARCH_UNPROTECT(old_level);}
- 内存管理: malloc()与free()的一种基于池表结构的实现
- 内存管理: malloc()与free()的一种基于clib标准的实现
- C语言内存管理:malloc、calloc、free的实现
- C语言内存管理:malloc、calloc、free的实现
- 单片机(不基于os)下如何实现简单的内存管理(malloc,realloc和free函数的重新实现)
- 单片机(不基于os)下如何实现简单的内存管理(malloc,realloc和free函数的重新实现)
- 单片机(不基于os)下如何实现简单的内存管理(malloc,realloc和free函数的重新实现)
- 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- 结构体中动态内存的管理(malloc和free)
- 结构体中动态内存的管理(malloc和free)
- 结构体中动态内存的管理(malloc和free)
- 结构体中动态内存的管理(malloc和free)
- malloc 与free的应用 结构 free源代码
- 内存储器管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- malloc()/free()的实现
- malloc()/free()的实现
- 错误 $LocalActivityRecord@40533030 is not valid; is your activity running?
- Form Trigger执行顺序
- c语言连接mysql中文显示乱码问题-解决方案
- 函数指针问题
- struts2 三 表单控件标签
- 内存管理: malloc()与free()的一种基于池表结构的实现
- 我的Linux PC开发环境
- SQL 2008 从零基础到如今(不断更新中)
- java加密技术
- QTableView双击 获取 一行数据
- jquery中如果有“.”,需要转义符
- JSP +SERVLET中文乱码问题
- 页面访问时发生错误: Remember that ordinal parameters are 1-based!
- eclipse下安装ruby插件aptana