Advertisement

单片机的内存管理——自行实现堆管理和

阅读量:

两年前某位同事跟我提过,在嵌入式开发中单片机无法自行完成动态内存管理的问题。后来我借助Keil开发环境,在Cotex M3芯片上成功利用malloc()函数实现了链表数据结构,并将代码展示给了他。对于固执之辈,则摆事实胜于讲道理。

我感觉使用malloc()无法完全适应我的需求,于是我决定独自构建一个优先队列管理系统

这就是本文产生的背景。这是我今天下午突然间想到的一种较为简单的方法。然而实际上这并没有什么实质的意义。因为我能够想到的事情已经被别人已经实现了。I can only imagine that it might be considered a programming problem’s solution.

数据结构较为简单,在程序运行中首先初始化一个较大的数组空间。随后将该数组划分为多个子块,并保证各个子块的大小保持一致。其中每个子块占用一个16字节的空间单元,并分配一个用于标记的字节单元来标识该子块的状态。同时统计有多少个子块未被有效利用。

在malloc的具体实施过程中,默认情况下函数参数对应的内容包括:一是表示所需的总存储空间大小(memory size),二是表示函数调用者所指定的目标分配后的起始位置(target address)。其基本思路大致如下:首先估算出所需的总内存块数量(number of memory blocks),接着检查剩余可用空间是

全部评论 (0)

还没有任何评论哟~