首頁 > 後端開發 > C++ > 當您在 C 中使用大小為零的 new[]` 時會發生什麼?

當您在 C 中使用大小為零的 new[]` 時會發生什麼?

Barbara Streisand
發布: 2024-12-16 16:26:10
原創
547 人瀏覽過

What Happens When You Use `new[]` with a Size of Zero in C  ?

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

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