简单的malloc,free实现函数
2014-09-13 17:54
393 查看
简单的malloc,free实现函数
struct mem_control_block { int is_avaliable; int size; }; int has_initialized = 0; void *managed_mem_start; void *last_valid_address; void mem_init() { last_valid_address = sbrk(0); managed_mem_start = last_valid_address; has_initalized = 1; } void free(*firstbyte) { struct mem_control_block *mcb; mcb = firstbyte - sizeof(struct mem_control_block); mcb->is_avaliable = 1; return; } void malloc(int numbyte) { struct mem_control_block *current_mcb; void *mem_location,current_location; if(!has_initialized) mem_init(); numbyte += sizeof(struct mem_control_block); mem_location = 0; current_location = managed_mem_start; while(current_location != last_valid_address) { current_mcb = (struct mem_control_block *)current_location; if(current_mcb->is_avaliable) if(current_mcb->size >= numbyte) { current_mcb->is_avaliable = 0; mem_location = current_location; break; } //current_location += sizeof(struct mem_control_block); current_location += current_mcb->size; } if(!memlocation) { sbrk(numbyte); mem_location = last_valid_address; last_valid_address += numbyte; current_mcb = mem_location; current_mcb->is_avaliable = 0; current_mcb->size = numbyte; } mem_location += sizeof(struct mem_control_block); return mem_location; }
相关文章推荐
- 基于malloc与free函数的实现代码及分析
- malloc,free的简单实现
- 居于x86_64的linux系统的malloc和free函数的实现
- 自己写的STM32 内存管理 实现了malloc,free,remalloc等函数
- 自己写的STM32 内存管理 实现了malloc,free,remalloc等函数
- malloc函数详解之自己用C语言写出实现malloc()和free()功能的函数
- 自己写的STM32 内存管理 实现了malloc,free,remalloc等函数
- C malloc free 函数实现
- 通过劫持系统函数malloc和free实现实时检测内存防泄漏(初级)
- malloc/new函数及malloc()的一种简单原理性实现
- 调用malloc()函数之后,内核发生了什么?附malloc()和free()实现的源代码
- malloc,free简单的实现
- malloc与free函数的实现代码
- 自己写的STM32 内存管理 实现了malloc,free,remalloc等函数
- 自己写的STM32 内存管理 实现了malloc,free,remalloc等函数
- [转载] STL allocator的介绍和一个基于malloc/free的allocator的简单实现
- 基于malloc与free函数的实现代码及分析
- malloc/new函数及malloc()的一种简单原理性实现
- 自己写的STM32 内存管理 实现了malloc,free,remalloc等函数
- 动态内存分配(malloc/free)简单实现--隐式空闲链表