首頁  >  文章  >  後端開發  >  `delete[]` 如何知道它要刪除的陣列的大小?

`delete[]` 如何知道它要刪除的陣列的大小?

Barbara Streisand
Barbara Streisand原創
2024-11-17 09:07:03748瀏覽

How Does `delete[]` Know the Size of the Array It's Deleting?

Delete[] 和陣列偵測

在 C 中,delete[] 用來刪除使用 new[] 指派的陣列。但是,系統如何知道指標指向數組?

編譯器和作業系統

雖然最初的問題顯示語言或編譯器不知道指標的類型,但實際情況更為微妙。編譯器不知道指標是數組還是單元素指標。但是,作業系統 (OS) 可以追蹤使用 new 進行的分配類型。

記憶體管理

當使用 new[] 分配數組時,記憶體不僅分配給數組元素,還分配給包含數組大小的元資料。該元資料儲存在數組元素之前的標頭中。當使用delete[]時,作業系統會檢查此標頭以確定數組大小。

單一元素與陣列

分配單一元素的情況使用 new (如 int* num = new int(1);),不會新增任何元資料。因此,當deleteForMe(num);時被呼叫時,作業系統僅刪除一個 int。

以上是`delete[]` 如何知道它要刪除的陣列的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn