Delete[] 和陣列偵測
在 C 中,delete[] 用來刪除使用 new[] 指派的陣列。但是,系統如何知道指標指向數組?
編譯器和作業系統
雖然最初的問題顯示語言或編譯器不知道指標的類型,但實際情況更為微妙。編譯器不知道指標是數組還是單元素指標。但是,作業系統 (OS) 可以追蹤使用 new 進行的分配類型。
記憶體管理
當使用 new[] 分配數組時,記憶體不僅分配給數組元素,還分配給包含數組大小的元資料。該元資料儲存在數組元素之前的標頭中。當使用delete[]時,作業系統會檢查此標頭以確定數組大小。
單一元素與陣列
分配單一元素的情況使用 new (如 int* num = new int(1);),不會新增任何元資料。因此,當deleteForMe(num);時被呼叫時,作業系統僅刪除一個 int。
以上是`delete[]` 如何知道它要刪除的陣列的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!