Can you summarize the following document?
        
  分配過程包括尋找一塊足夠大未被使用的記憶體。  通常,記憶體是從一個被稱為堆的記憶體池中分配出來的。高階語言封裝了記憶體地址的概念,記憶體通常是通過指標來間接訪問的。分配演算法經常將組織分配釋放組塊等操作封裝成抽象的介面供上層函式呼叫。

  堆分配的效率與分配演算法的優劣關係很大。

  

  定長分配通常被稱為記憶體池分配,使用一個連結串列來儲存空閒記憶體塊資訊(通常每塊記憶體大小相同)。這種方法在簡單的嵌入式系統中效果很好。

  在這種分配方式下,記憶體從一個2的N次冪大的記憶體塊中分配。當記憶體塊比要分配的長度大兩倍以上,記憶體塊平均分裂成兩塊。選中其中一半,重複這個過程(檢查長度,滿足條件則分裂)直到記憶體塊剛好等於需要的長度。  所有的塊資訊儲存在一個排序過的連結串列或者二叉樹中。當一個塊被釋放的時候與他的相鄰塊進行比較。如果他們都被釋放,就合併成一個大塊放進更大的一個塊列表 中。每當分配結束,分配器會從儘量小的塊重新開始分配,以避免產生不必要的碎片。
在電腦科學中, 動態記憶體分配(Dynamic memory allocation)又稱為堆記憶體分配,是指計算機程式在執行期中分配使用記憶體。它可以當成是一種分配有限記憶體資源所有權的方法。