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:
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.
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);
Ini memulakan wsk2 kepada nilai 5.
wsk2 = new unsigned int;
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
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!