? ? ? ? 什么是順序表?順序表是物理結(jié)構(gòu)連續(xù)的線性表,它并不要求該線性表在邏輯上也連續(xù)。其中物理結(jié)構(gòu)連續(xù),代表著,一個順序表中的元素按照先后次序緊密地排列在存儲空間中,即可認(rèn)為該順序表占用了一大段的連續(xù)存儲空間。
? ? ? ? 因?yàn)轫樞虮硇枰加靡徽麎K連續(xù)的存儲空間。如果多個不同大小的順序表按左右順序排列,釋放掉中間的任意一個順序表,并且它的左右相鄰順序表始終駐留。那么,所釋放的那個順序表所占的存儲空間就會如一道縫隙留在原地。此時該縫隙最大只能存儲縫隙大小的內(nèi)容。若以小于這道縫隙大小的內(nèi)容填充在這里,自然會形成一道更小的縫隙。而這種更小的縫隙是可以在程序運(yùn)行時逐漸積累數(shù)量的,如果一個程序長時間運(yùn)行,并且以一定頻率產(chǎn)生這種縫隙,久而久之,這類縫隙越來越多,且所有縫隙無法被使用。這就是所謂的碎片。
20190531更新:
在閱讀數(shù)據(jù)結(jié)構(gòu)一書時,在<動態(tài)存儲管理>章節(jié)中<可利用空間表及分配方法>小節(jié)中有三種分配策略,分別是首次擬合法、最佳擬合法和最差擬合法。其中最佳擬合法定義為:將可利用空間表中一個不小于n且最接近n的空閑塊的一部分分配給用戶。因?yàn)楦鶕?jù)改分配原則進(jìn)行分配時,總是找大小最接近請求的內(nèi)存塊,因此系統(tǒng)中可能產(chǎn)生一些存儲量甚小而無法利用的小片內(nèi)存。而與順序表相似的是首次擬合法。首次擬合法的分配是隨機(jī)的,介于最佳擬合法和最差擬合法之間。