Mengapakah `malloc()` Menyebabkan Ralat \'Penukaran Tidak Sah\' dalam C ?

Susan Sarandon
Lepaskan: 2024-10-27 00:19:02
asal
392 orang telah melayarinya

 Why Does `malloc()` Cause an

Isu Peruntukan Malloc: Memahami Ralat "Penukaran Tidak Sah"

Kod yang disediakan memperkenalkan isu biasa apabila cuba memperuntukkan memori menggunakan malloc( ). Ralat berpunca daripada penetapan nilai pulangan malloc() terus kepada penuding char tanpa penghantaran yang betul.

Fungsi malloc() menyimpan blok memori dalam timbunan dan mengembalikan penuding kosong generik. Walau bagaimanapun, kod tersebut memberikan penuding ini kepada penunjuk char tanpa penukaran jenis yang jelas. Ketidakpadanan ini mencetuskan ralat kompilasi "penukaran tidak sah daripada batal kepada char`."

Menyelesaikan Ralat Penukaran

Untuk menyelesaikan isu ini, anda mesti secara eksplisit menghantar nilai pulangan malloc() kepada jenis yang dikehendaki. Dalam kes ini, anda perlu menghantar ke penunjuk char. Pengisytiharan yang betul sepatutnya kelihatan seperti ini:

<code class="c++">char *foo = (char*)malloc(1);</code>
Salin selepas log masuk

Operasi pemutus ini secara eksplisit menukar penuding kekosongan generik yang dikembalikan oleh malloc() kepada penunjuk char.

G Warning

Mesej ralat menyebut penggunaan g dengan CodeBlocks dan menimbulkan persoalan sama ada menyusun fail sebagai fail .cpp adalah penting. Jawapannya ya. Kod yang disusun dengan g lalai kepada standard C, yang memerlukan penghantaran yang ditunjukkan di atas. Ini memastikan bahawa pengkompil mengendalikan penukaran jenis dengan ketat dan menghalang potensi isu atau tingkah laku yang tidak ditentukan.

Atas ialah kandungan terperinci Mengapakah `malloc()` Menyebabkan Ralat \'Penukaran Tidak Sah\' dalam C ?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!