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中文網其他相關文章!