C new[0] 的記憶體分配
在 C 中,new[] 運算子允許分配動態記憶體。但是,當運算子呼叫中指定的陣列大小為零時會發生什麼?一個簡單的測試程序輸出表明記憶體似乎已分配。
標準定義
依 C 標準,在 5.3.4/7 中:
「當直接new聲明符中表達式的值為0時,呼叫分配函數來分配一個沒有元素。」
未定義行為
但是,需要注意的是,3.7.3.1/2 聲明:
「取消引用 a的效果作為零大小請求返回的指標未定義。
分配失敗此外,標準提到即使對於零大小請求,分配仍然可以失敗。
意義實際上,這表示:
您可以使用 new[] 指派空數組。該標準包含一個腳註,表明其目的是允許new[]使用malloc() 或calloc() 等函數實現,它們還針對零大小請求傳回非空指標。
以上是當您在 C 中使用大小為零的 new[]` 時會發生什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!