Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mendereferensikan 'variabel' penunjuk null yang mungkin null (seumur hidup.1)
Keterangan
Dereferensi pointer null sering terjadi masalah di C dan C++. Kami memiliki beberapa pemeriksaan untuk menangani masalah tersebut. Lihat posting blog ini untuk perbandingan. Ketika mesin analisis menyimpulkan bahwa nilai pointer mungkin null dan melihat bahwa pointer didereferensikan, itu akan memancarkan C26823 peringatan. Anda dapat mengaktifkan C26822 hanya untuk analisis yang lebih permisif. Pemeriksaan ini juga mendukung anotasi SAL dan gsl::not_null untuk menjelaskan invarian kode.
Contoh
void invalidate(int **pp);
void condition_null_dereference_invalidated(int* p)
{
if (p)
return;
invalidate(&p);
// The call above could reset the value of `p`, thus the low confidence warning.
*p = 5; // warning: C26823
}
Untuk mengatasi peringatan ini, pastikan tidak ada dereferensi pointer null dalam kode, berpotensi dengan menambahkan pemeriksaan null. Jika kode ditemukan benar, temuan positif palsu sering dapat diperbaiki dengan menggunakan gsl::not_null atau anotasi SAL. Ada beberapa contoh cara menggunakan beberapa anotasi tersebut di bawah ini:
_Notnull_ int *get_my_ptr();
gsl::not_null<int *> get_my_ptr2();
void local_analysis(int *p) {
_Analysis_assume_(p != nullptr);
*p = 42;
}
void local_analysis2(_In_ int *p) {
int a = *p;
}