Rumah > pembangunan bahagian belakang > C++ > Adakah Operator `baru` dalam C Sentiasa Memulakan Memori kepada Sifar?

Adakah Operator `baru` dalam C Sentiasa Memulakan Memori kepada Sifar?

Barbara Streisand
Lepaskan: 2024-12-10 22:27:26
asal
243 orang telah melayarinya

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

Pengendali baharu Memulakan Memori kepada Sifar

Walaupun terdapat salah tanggapan umum bahawa pengendali baharu tidak memulakan ingatan dengan sifar, ia sememangnya boleh mencapainya tugasan di bawah keadaan tertentu.

Dalam C , terdapat dua senario utama di mana pengendali baharu melakukan sifar pemula:

  1. Kurungan Permulaan:

    Apabila baharu diikuti oleh kurungan dan senarai pemula kosong, seperti wsk = new unsigned int() ;, ia secara eksplisit memanggil pembina lalai jenis tersebut. Untuk jenis primitif seperti int tidak ditandatangani, pembina lalai memulakan memori kepada sifar.

  2. Permulaan Tatasusunan Berkurung:

    Serupa dengan senario sebelumnya, menggunakan kurungan dan senarai pemula kosong dalam perisytiharan tatasusunan, seperti wsa = new unsigned int[5]();, memulakan setiap elemen tatasusunan kepada sifar.

Dalam kod contoh yang disediakan, baris berikut menunjukkan permulaan sifar:

wsk2 = new unsigned int(5);
Salin selepas log masuk

Ini memulakan wsk2 kepada nilai 5.

wsk2 = new unsigned int;
Salin selepas log masuk

Ini memulakan wsk2 kepada sifar kerana ia menggunakan sintaks kurungan tanpa senarai pemula. Tingkah laku ini digunakan pada kedua-dua skalar dan tatasusunan.

Dalam bahagian kedua contoh, output mengesahkan permulaan sifar:

wsk2: 0x928e008 5
wsk2: 0x928e008 0
Salin selepas log masuk

Baris pertama menunjukkan bahawa wsk2 menunjuk ke alamat 0x928e008 dan mengandungi nilai 5. Selepas memadam wsk2 dan mencipta satu lagi menggunakan int baru yang tidak ditandatangani;, baris kedua menunjukkan bahawa ia kini menunjuk ke alamat yang sama (0x928e008) tetapi mengandungi sifar.

Atas ialah kandungan terperinci Adakah Operator `baru` dalam C Sentiasa Memulakan Memori kepada Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan