1. 程式人生 > >malloc/free記憶體碎片產生的原因

malloc/free記憶體碎片產生的原因

記憶體碎片一般是由於空閒的連續空間比要申請的空間小,導致這些小記憶體塊不能被利用.產生記憶體碎片的方法很簡單,舉個例:   
      假設有一塊一共有100個單位的連續空閒記憶體空間,範圍是0~99.如果你從中申請一塊記憶體,如10個單位,那麼申請出來的記憶體塊就為0~9區間.這時繼續申請一塊記憶體,比如說5個單位大,第二塊得到的記憶體塊就應該為10~14區間.如果把第一塊記憶體塊釋放,然後再申請一塊大於10個單位的記憶體塊,比如說20個單位.因為剛被釋放的記憶體塊不能滿足新的請求,所以只能從15開始分配出20個單位的記憶體塊.現在整個記憶體空間的狀態是0~9空閒,10~14被佔用,15~24被佔用,25~99空閒。其中0~9就是一個記憶體碎片了.如果10~14一直被佔用,而以後申請的空間都大於10個單位,那麼0~9就永遠用不上了,造成記憶體浪費.