Kesalahan Menggunakan "ini" Selepas Memadamkannya
Soalan Lazim C memberi amaran agar tidak mengakses penuding "ini" selepas memanggil "padam ini ," memetik empat sekatan, termasuk larangan memeriksa, membandingkan, mencetak atau menghantarnya. Tetapi mengapa sekeping data yang kelihatan tidak berbahaya ini begitu berbahaya?
Inti utama perkara ini terletak pada tingkah laku yang tidak ditentukan yang berlaku selepas memadamkan "ini." Memadamkan "ini" secara berkesan mendelokasikan objek semasa, menjadikan penunjuk "ini" tidak sah. Sebarang operasi seterusnya yang melibatkan penuding ini menjadi tidak dapat diramalkan.
Walaupun mungkin tergoda untuk menghantar "ini" kepada integer atau mengeluarkan nilainya menggunakan printf(), piawaian C tidak memberikan jaminan ke atas gelagat operasi ini. Pengkompil bebas untuk mentafsir tindakan ini dengan cara sewenang-wenangnya, seperti mengakses memori yang tidak dimulakan atau malah merosakkan cakera keras.
Untuk memintas isu ini, pertimbangkan untuk membuat salinan penuding "ini" sebagai integer sebelum memadamkan ia. Ini membolehkan anda mengekalkan nilai penuding untuk kegunaan masa hadapan tanpa menggunakan gelagat yang tidak ditentukan.
Atas ialah kandungan terperinci Mengapakah Menggunakan 'ini' Selepas Memadamkannya Sangat Berbahaya dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!