EDN首页   博客首页

日志档案

发表于 2007-10-18 0:00:39

1

标签: GUI  嵌入式  内存管理  

UCGUI内存管理

UCGUI的内存管理是由静态数组和双向链表共同管理的。静态数组定义了整个范围大小,双向链表负责动态的管理使用内存。这样做可以在一定的内存区域内动态使用。

内存申请的时候返回句柄,而不是内存的地址,这样做的优点是用户不直接使用内存地址,可以进行碎片整理。在进行内存申请的时候,首先查询链表是否有空闲的句柄,如果有的话再从链表头开始查询是否由足够的空间,如果有足够的空间就分配,如果一直到最后一个句柄也没有足够空间,就进行内存整理(有全局变量控制内存整理的打开和关闭)。

在释放内存的时候,直接将句柄在链表中删掉就可以了。

内存整理是从链表表头开始查询两个相邻句柄是否有空闲空间,如果有的话就将后面的数据拷贝到前一数据的后面。这样移动,知道找到足够的申请空间。

这里面的关键还有在内存管理的时候进行内存管理的加锁和解锁。

系统分类: 嵌入式   |   用户分类: 无分类   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(683)    回复(3)  

投一票您将和博主都有获奖机会!

最新评论

  • 彩云

    2007-10-18 10:24:05

    支持原创,投一票

    博主真厉害,写这么多原创文章,佩服

     

    一定常来学习,常来支持

  • yanshen

    2007-10-18 17:29:07

    谢谢,前面有些也是收集的资料。不过自己的心得也写了一些。

  • sguoliu

    2008-7-8 16:35:01

    我觉得这个方式是有个名的:内存池