首頁 > 後端開發 > C++ > C 中的 new 運算子總是將記憶體初始化為零嗎?

C 中的 new 運算子總是將記憶體初始化為零嗎?

Barbara Streisand
發布: 2024-12-10 22:27:26
原創
243 人瀏覽過

Does the `new` Operator in C   Always Initialize Memory to Zero?

運算子new 將記憶體初始化為零

儘管人們普遍誤解new 運算子不會用零初始化內存,但它確實可以初始化內存,但它確實可以初始化內存實現這一點特定條件下的任務。

在C 中,new 運算子執行零的情況主要有兩種初始化:

  1. 括號初始化:

    當new 後面跟著括號和一個空的初始化列表時,例如wsk = new unsigned int() ;,它明確地呼叫該類型的預設建構函式。對於像 unsigned int 這樣的基本類型,預設建構函式會將記憶體初始化為零。

  2. 帶括號的陣列初始化:

    與先前的場景類似,在陣列聲明中使用括號和空的初始化列表,例如wsa = new unsigned int[5]();,初始化每個陣列元素為零。

在提供的範例程式碼中,以下幾行展示了零初始化:

wsk2 = new unsigned int(5);
登入後複製

這將 wsk2 初始化為值 5。

wsk2 = new unsigned int;
登入後複製

這會將 wsk2 初始化為零,因為它使用括號語法而沒有初始化列表。此行為適用於標量和陣列。

在範例的第二部分中,輸出確認了零初始化:

wsk2: 0x928e008 5
wsk2: 0x928e008 0
登入後複製

第一行顯示 wsk2 指向位址 0x928e008並且包含值 5。刪除 wsk2 並使用 new unsigned int; 建立另一個後,第二行顯示它現在指向相同的位址(0x928e008) 但包含零。

以上是C 中的 new 運算子總是將記憶體初始化為零嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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