UCGUI内存管理

来源:互联网 发布:淘宝购物评级优秀 编辑:程序博客网 时间:2024/05/20 14:23

 

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

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

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

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

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

原创粉丝点击