Rumah >pembangunan bahagian belakang >C++ >Mengapa C Memerlukan Cast untuk `malloc()` Manakala C Tidak?
Keperluan Cast C untuk malloc()
Walaupun C membenarkan penukaran tersirat penunjuk tidak sah kepada penunjuk objek, C menguatkuasakan keselamatan jenis yang ketat . Akibatnya, dalam C , menghantar nilai pulangan malloc() adalah perlu untuk menetapkannya kepada jenis penuding yang berbeza.
Keperluan Cast Kekurangan C
Dalam C, ketiadaan cast apabila memberikan nilai pulangan malloc() kepada jenis penunjuk yang berbeza bukanlah satu kesilapan, sebaliknya hasil daripada penukaran jenis tersirat bahasa. C mengandaikan bahawa fungsi memanggil tanpa pengisytiharan terdahulu mengembalikan integer dan penunjuk tanpa cast ditafsirkan sebagai integer.
Implikasi
Penukaran tersirat ini boleh membawa kepada masa jalan isu jika pengepala yang betul (cth., stdlib.h) tidak disertakan. Tanpa hantaran, C akan memberikan nilai int penuding secara senyap kepada pembolehubah penunjuk, yang berpotensi merosakkan data.
Amalan C Moden
Dalam C moden, ia adalah disyorkan untuk menggunakan baharu dan padam untuk pengurusan memori dan bukannya malloc() dan free(). Pengendali ini secara automatik menghantar ke jenis penunjuk yang betul dan menyediakan ciri keselamatan tambahan, termasuk pembina dan pemusnah.
Atas ialah kandungan terperinci Mengapa C Memerlukan Cast untuk `malloc()` Manakala C Tidak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!