Rumah > Artikel > pembangunan bahagian belakang > Berikut ialah beberapa tajuk berasaskan soalan yang menangkap intipati artikel: * Mengapa Saya Mendapat Ralat \"Penukaran Tidak Sah daripada void* to char*\" Apabila Menggunakan Malloc? * Bagaimana Saya Membetulkan \"
Penukaran Tidak Sah Apabila Menggunakan Malloc?
Apabila cuba menyusun kod menggunakan fungsi malloc(), seseorang mungkin menghadapi "penukaran tidak sah daripada ralat void* to char*". Isu ini timbul disebabkan oleh jenis data yang berbeza yang terlibat.
Memahami Ralat
Fungsi malloc() memperuntukkan memori pada timbunan dan mengembalikan penunjuk jenis void* . Penunjuk ini boleh diberikan kepada pembolehubah dari sebarang jenis penuding, tetapi penting untuk menghantarnya dengan betul. Dalam C , penetapan void* kepada char* memerlukan casting yang jelas untuk memastikan keserasian.
Penyelesaian: Type Casting
Untuk menangani ralat ini, anda boleh menghantar pulangan nilai malloc() kepada char* sebelum memberikannya kepada foo. Kod yang diperbetulkan akan kelihatan seperti ini:
<code class="cpp">char *foo = (char*)malloc(1);</code>
Dengan menggunakan cast (char*), anda secara eksplisit menukarkan void* kepada pointer char*, membenarkan penetapan yang betul untuk foo.
Nota Jenis Fail
Perlu dinyatakan bahawa menyusun kod sebagai fail .cpp dengan g adalah sesuai. Kod C biasanya disimpan dengan sambungan .cpp dan disusun menggunakan pengkompil g, yang menyokong sintaks C.
Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan yang menangkap intipati artikel: * Mengapa Saya Mendapat Ralat \"Penukaran Tidak Sah daripada void* to char*\" Apabila Menggunakan Malloc? * Bagaimana Saya Membetulkan \". Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!