lzh电子论坛

欢迎来到lzh电子论坛:
如果您对电子技术感兴趣就加入我们吧!在这里互相交流互相学习!主要讨论的方向有:单片机,ARM,PCB板设计,FPGA,汇编,C/C++等方面。
-----lzh电子论坛
lzhbbs.top-me.com
lzh电子论坛

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...

欢迎访问lzh电子论坛。可通过【谷歌,SOSO,搜狗】搜索“lzh电子论坛”直接进入论坛。点击了解论坛详细制度


    UCGUI内存管理

    分享
    avatar
    Admin
    管理员
    管理员

    帖子数 : 869
    威望 : 15
    注册日期 : 12-11-23
    年龄 : 25

    UCGUI内存管理

    帖子 由 Admin 于 2013-08-10, 8:42 pm

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

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

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

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

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

      目前的日期/时间是2018-02-20, 11:30 am