運算子 new 將記憶體初始化為零
在 C 中,new 運算子通常用於動態記憶體分配。它分配指定大小的記憶體區塊並傳回指向已分配記憶體的指標。然而,有一個常見的誤解,即 new 不會用零初始化分配的記憶體。本文闡明了 new 如何初始化內存,解決了明顯的差異。
預設和零初始化
使用new 建立基本類型的物件時(例如int , unsigned int),有兩種變體:
同樣適用於陣列:
零初始化說明
雖然new 通常會初始化具有不確定值的基元,但在使用帶有空括號語法的零帶有空括號時會出現異常(new類型();)。這會將記憶體初始化為零。 C 11 標準支援此行為:[C++11: 5.3.4/15]: A new-expression that creates an object of type T initializes that object as follows: [...] If the new-initializer is interpreted according to the initialization rules of 8.5 for direct-initialization.
新放置
新放置允許在特定位置分配記憶體。利用這種零初始化技術,很明顯記憶體確實被設定為零://... (memory allocation and initialization code) wsa[0] = 1; // Modify the memory location wsa[1] = 2; // Modify the memory location // ... (more modifications) //...
以上是C 中的 new 是否將記憶體初始化為零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!