首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 嵌入式系统 > Keil C51的动态内存管理机制分析与改进

Keil C51的动态内存管理机制分析与改进

资料介绍
Keil C51的动态内存管理机制分析与改进

Keil C51动态内存管理机制分析及改进
作者:重庆电力高等专科学校 丁明亮 熊真春 阅读:311 引用:0
发布时间:2007-07-04 08:30 出处:单片机及嵌入式系统应用

Keil
C51是常用的嵌入式系统编程工具,它通过init_mempool、mallloe、free等函数,提供
了动态存储管理等功能。本文通过对init_mempool、mallloe和free这3个Keil
C51库函数源代码的分析,揭示其实现的原理和方法,并对其中的不足作了改进,以使K
eil C编程人员更好地应用动态存储管理。
1 相关数据结构、变量及说明
在Keil
C51安装目录下的\c5l\lib目录下,有实现init_mempool、mallloe和free这3个函数的
C源文件init_mere.c、malloc.c和free.c。下面针对Keil
C7.5A版,将其中与动态存储管理相关的数据结构介绍如下:
[pic]
该结构的next指向堆中的下一空闲内存块,len表示该空闲块除去该块首部的struct
__mem__结构所占的字节数后,该块实际可用的字节数。由于next是一个指向XDATA区的
指针,故在Keil C51中应用程序所定义的堆空间应在XDATA区中定义。
在Keil
C51中,堆中的所有空闲内存块是用一个单链表来管理的,struct_mere_即为该链表结点
的结构,后面定义的宏AVAIL为该链表的首结点,为叙述方便,以下将该链表称为AVAIL
链表。
[pic]
  #define AVAIL(__meM_avaiL_[O]) 全局数
Keil C51的动态内存管理机制分析与改进
本地下载

评论