Dalam C , pembangun mesti menghantar nilai pulangan malloc() kepada jenis penunjuk yang dimaksudkan, manakala dalam C , pelakon ini tidak diperlukan. Perbezaan ini berpunca daripada beberapa perbezaan utama antara kedua-dua bahasa.
Dalam C, penunjuk kosong boleh ditukar secara tersirat kepada mana-mana jenis penunjuk objek lain, ciri yang tidak terdapat dalam C . Ini membenarkan pengaturcara C untuk menetapkan nilai pulangan malloc() (yang mengembalikan penuding kosong) terus kepada jenis penuding tertentu tanpa hantaran eksplisit.
Walau bagaimanapun, dalam C , pemutus diperlukan kerana jenis yang ketat. sistem yang menguatkuasakan keserasian antara pembolehubah dan nilai yang diberikannya. Tanpa hantaran, pengkompil tidak dapat memastikan bahawa nilai pulangan daripada malloc() (penunjuk kekosongan) sesuai untuk penetapan kepada pembolehubah jenis penunjuk tertentu.
Selain itu, menghantar hasil malloc() dalam C berfungsi sebagai alat diagnostik. Tanpa cast, jika pengisytiharan untuk malloc() tiada dalam skop, pengkompil mentafsirkan panggilan sebagai mengembalikan int dan bukannya penuding, yang membawa kepada diagnostik ketidakserasian jenis. Barisan pelakon menyekat diagnostik ini, mengalih keluar potensi sumber isu masa jalan.
Walaupun malloc() dan free() boleh digunakan dalam C , secara amnya adalah dinasihatkan untuk menggunakan alatan pengurusan memori khusus bahasa, baharu dan padam, dan bukannya bergantung pada fungsi warisan C. Pendekatan ini sejajar dengan amalan terbaik untuk menulis kod C idiomatik.
Atas ialah kandungan terperinci Mengapa Saya Mesti Hantar Nilai Pulangan `malloc()` dalam C , tetapi Bukan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!