編程心得 ---- 內存管理
在編寫內存管理方面的程序時,遇到需要分配大塊的內存空間,然後將該大內存
空間分成若干等長的小內存塊。程序中需要對這些小塊進行讀寫和刪除,其中每個小
內存塊可以分配給不同的使用者。那麼如何快速找到沒有分配的內存塊以及收回不使
用的內存塊是性能瓶頸的關鍵所在。
很顯然,簡單的可以使用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