記憶體分配器如何知道Delete[]的陣列大小
在C 中,delete[] 運算子用於釋放數組記憶中的物體。然而,與明確需要數組大小的 new[] 運算子不同,delete[] 似乎在沒有此資訊的情況下進行操作。它如何決定數組的大小?
當您使用 new[] 在堆上分配記憶體時,記憶體分配器會為數組元素分配連續的記憶體區塊,並儲存有關分配的附加信息,包括它的大小。此資訊通常儲存在緊鄰已分配記憶體之前的標頭中。
標準化
使用分配的記憶體儲存數組大小的方法在 C 本身中並未標準化。不同的記憶體分配器實現不同的技術:
擷取陣列大小
刪除期間,delete[]從關聯的標頭或記憶體分配器中擷取陣列大小。透過知道大小,delete[] 可以有效地釋放整個物件數組。
結論
綜上所述,new[] 分配的記憶體攜帶了其相關資訊大小,透過堆疊元資料、記憶體標頭或指標值。 delete[] 運算子使用此資訊來確定釋放期間的陣列大小,從而實現高效的記憶體管理,而無需明確提供大小。
以上是`delete[]` 如何知道它正在釋放的陣列的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!