Bagaimana untuk menyelesaikan ralat masa jalan C++: 'penunjuk tidak sah'?
Pengenalan:
C++ ialah bahasa pengaturcaraan yang berkuasa, tetapi anda mungkin menghadapi pelbagai ralat masa jalan semasa menulis kod. Salah satu ralat biasa ialah ralat "penunjuk tidak sah". Mesej ralat ini menunjukkan bahawa terdapat penunjuk ke alamat memori yang tidak sah dalam kod. Artikel ini menerangkan cara menyelesaikan ralat ini dan menyediakan contoh kod yang berkaitan.
Apakah penunjuk tidak sah?
Dalam C++, penunjuk ialah pembolehubah yang memegang alamat memori pembolehubah. Penunjuk boleh menunjuk kepada pembolehubah dari sebarang jenis, termasuk integer, titik terapung, aksara, dsb. Ralat 'penunjuk tidak sah' berlaku apabila penunjuk menunjuk ke alamat memori yang tidak sah. Situasi ini biasanya berlaku dalam tiga situasi berikut:
int* p; *p = 10;
int* p = new int; delete p; *p = 10;
int arr[5] = {1, 2, 3, 4, 5}; int* p = &arr[0]; p = p + 10; *p = 10;
Bagaimana untuk menyelesaikan ralat 'penunjuk tidak sah'?
Untuk membetulkan ralat 'penunjuk tidak sah', kita perlu mengikuti langkah berikut:
int* p1 = new int; *p1 = 10; int* p2 = nullptr; p2 = new int; *p2 = 20;
int* p = new int; *p = 10; delete p; p = nullptr; // 之后不要再使用指针p
int arr[5] = {1, 2, 3, 4, 5}; int* p = &arr[0]; if (p < &arr[5]) { p = p + 10; // 避免指针超出范围 *p = 10; }
Kesimpulan:
'penunjuk tidak sah' ialah salah satu ralat masa jalan biasa dalam C++, yang bermaksud terdapat penuding ke alamat memori yang tidak sah dalam kod. Untuk menyelesaikan ralat ini, kita harus memulakan penuding dengan betul dan memastikan ia menunjuk ke alamat memori yang sah, elakkan berulang kali membebaskan memori yang ditunjuk oleh penuding dan elakkan daripada membiarkan penuding melebihi skop memori yang ditunjukkannya.
Dengan mengikuti langkah-langkah di atas, kami boleh menguruskan penunjuk dengan lebih baik dan mengurangkan berlakunya ralat 'penunjuk tidak sah'. Semasa menulis dan menyahpepijat kod, memberi perhatian yang teliti kepada penggunaan penunjuk boleh membantu kami mengesan dan menyelesaikan ralat sedemikian lebih awal dan meningkatkan kualiti dan keteguhan kod.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat masa jalan C++: 'penunjuk tidak sah'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!