golang切片擴容時底層記憶體位址是連續的麼,會不會出現不連續的情況?

時間 2021-06-09 11:39:35

1樓:

從程式角度看,切片不管有沒有擴容,因為底層是陣列,陣列這種型別就是按位址索引訪問的,所以是記憶體連續的,這裡用的是邏輯位址

作業系統組織記憶體的時候是用的虛擬記憶體,用段表和頁表管理物理記憶體分配,實際在物理記憶體這個地方只能保證一頁內連續,跨頁不保證連續

2樓:吹雪

即使是不擴容也會有不連續的可能性,golang底層還是切片的實現是用c的malloc分配記憶體,也就是說是分配在堆上,malloc的機制是類似於鍊錶的,上層看起來是連續,但是實際在記憶體空間中位址本就不連續。malloc分配記憶體還是去堆中查詢可用空間,串聯起來返回給陣列指標,所以你問的問題就是有點無意義,底層記憶體即使不擴容也會不連續

3樓:大黃蜂

陣列是切片和對映的基礎資料結構。

陣列是一種長度固定的資料型別,用於儲存一段具有相同資料型別的元素的連續塊。儲存的資料型別可以是內建型別或某種結構型別。陣列占用的記憶體是連續分配,而且每個元素的型別相同,訪問元素時在記憶體中可以以固定的距離索引,速度非常塊。

錄音時怎樣降低底噪?

無極老閆 這個底噪應該是可以接受的了,如果底噪很大,你就該看看是不是你的線材有點太差了,強烈建議換一套線,用NEUTRIK接頭加加奈美音訊線線。 啊蒂森 你這個裝置的話,不應該有底噪了。即使有底噪,也是在可控的範圍內。當然,其實這個底噪分兩種,一種是裝置本身的底噪,另乙個就是環境噪音。這兩種噪音是很...

3d列印主要引數切片型別有哪些及設定時注意事項?

縱維立方Anycubic 如果是打手辦類的模型,體積一般都比較大,對於精度的要求相對較低,常會使用到抽殼及打孔的處理方式。在列印手辦類的模型時,我們應該注意 擺放抽殼 由於手辦類模型的體積較大,對樹脂耗材的消耗量較大,因此一般會進行抽殼的處理。在抽殼時,層厚設定為2mm比較適合。而抽殼一般伴隨著打孔...

如何評價諾曼第登陸時攻守雙方的表現?

Leif 作為規模巨集大的巴格拉季昂戰役中的一場小戰鬥,進攻方還是挺像模像樣的。防守方嘛,基本都被拉去明斯克填坑了,剩下的人只是象徵性地比劃了兩下。 明見萬里 借用士兵突擊中,王團長在演習時說的一句話來形容德軍 攻不成攻,守不成守。不過這你怎麼怪德軍?西有美國,英國,法國 戴高樂領導的軍隊 搶灘登陸...