编程心得 ---- 内存管理
在编写内存管理方面的程序时,遇到需要分配大块的内存空间,然后将该大内存
空间分成若干等长的小内存块。程序中需要对这些小块进行读写和删除,其中每个小
内存块可以分配给不同的使用者。那么如何快速找到没有分配的内存块以及收回不使
用的内存块是性能瓶颈的关键所在。
很显然,简单的可以使用bool数组来标记每块小内存块的使用情况,但是在查找
没有分配的内存块时只能通过for循环来依次查找其使用情况。这是很简单的也是很方
便想到的,但是其搜索速度达到了O(n),性能不是很好。
但是,通过一个list<int>结构就可以解决这个问题。list拥有栈的功能,将未使
用的内存块标号push到list中,使用时只需pop一下即可;回收不使用的内存块时只需
将其标号push到list中去,这样很简单的就可以将搜索速度达到O(1)。
ps: list的一些相关函数
void push_front(const T&) //insert a new element at the beginning
void push_back(const T&) //insert a new element at the end
void pop_front(void) //remove the first element
void pop_back(void) //remove the last element
reference front() //return the first element
reference back() //return the last element