一、順序存儲有比較多外部碎片的原因
順序存儲是一種數(shù)據(jù)存儲方式,它是將數(shù)據(jù)依次存儲在一片連續(xù)的內(nèi)存空間中,每個數(shù)據(jù)元素占用固定的空間大小。相比于鏈?zhǔn)酱鎯?,順序存儲具有存儲和訪問效率高的優(yōu)點(diǎn),但是也存在一些問題,其中之一就是外部碎片比較多。
外部碎片指的是分散在內(nèi)存中的小塊未被利用的空間,這些空間無法被分配給需要存儲的數(shù)據(jù),從而造成內(nèi)存空間的浪費(fèi)。在順序存儲中,當(dāng)需要存儲的數(shù)據(jù)元素大小不同時,容易出現(xiàn)外部碎片問題。以下是造成順序存儲有比較多外部碎片的原因:
1、數(shù)據(jù)元素大小不一
在順序存儲中,數(shù)據(jù)元素的大小必須是固定的,如果不同的數(shù)據(jù)元素大小不同,就會產(chǎn)生浪費(fèi)空間的現(xiàn)象。比如,如果需要存儲兩個數(shù)據(jù)元素,一個占用1個字節(jié),一個占用10個字節(jié),那么存儲這兩個元素時就會產(chǎn)生外部碎片。
2、內(nèi)存分配和釋放不合理
在順序存儲中,當(dāng)一個數(shù)據(jù)元素被刪除時,它所占據(jù)的空間就變成了未分配的內(nèi)存空間,這些空間可能太小,不能被下一個需要存儲的數(shù)據(jù)元素使用,從而產(chǎn)生外部碎片。如果內(nèi)存分配和釋放不合理,就會導(dǎo)致順序存儲中外部碎片的增加。
3、數(shù)據(jù)元素的插入和刪除
在順序存儲中,如果需要插入或刪除一個數(shù)據(jù)元素,就需要移動其他數(shù)據(jù)元素的位置,從而留出空間。這個操作會使得已有的數(shù)據(jù)元素重新排列,容易產(chǎn)生外部碎片。而且,如果插入或刪除的數(shù)據(jù)元素比較多,就會導(dǎo)致大量的數(shù)據(jù)元素的移動,從而降低了存儲和訪問的效率。