首頁 > 後端開發 > C++ > new int[0] 可以在 C 中分配記憶體嗎?

new int[0] 可以在 C 中分配記憶體嗎?

Patricia Arquette
發布: 2024-12-29 18:00:26
原創
873 人瀏覽過

Can `new int[0]` Allocate Memory in C  , and What are the Implications?

C 中可以使用「new int[0]」來分配空數組嗎?

C 中,使用 new 運算子進行分配經常會用到記憶力。然而,出現了一個關於使用 new int[0] 分配空數組的問題。這段程式碼是否分配內存,標準對此有何規定?

標準視角

根據C標準的5.3.4/7,當直接-new-declarator 表達式的計算結果為零,分配函數分配一個沒有元素的數組。儘管如此,3.7.3.1/2 強調取消引用由零大小請求產生的指標會導致未定義的行為。

實踐

儘管標準允許分配空數組時,它會警告此操作仍可能失敗。因此,只能安全地將分配的記憶體傳遞給數組刪除以進行釋放,從而避免任何直接記憶體存取。

特別說明

標準中的腳註表明行為模仿 C 中的 malloc() 或 calloc() 方法,其中零請求返回非空指標。這種與 C 的偏差確保了跨平台的互通性,並允許 C 中的空數組分配。

以上是new int[0] 可以在 C 中分配記憶體嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板