Bagikan melalui


Peringatan C26481

Jangan gunakan aritmatika pointer. Gunakan rentang sebagai gantinya (bounds.1).

Keterangan

Pemeriksaan ini mendukung aturan Pedoman Inti C++ I.13: Jangan meneruskan array sebagai penunjuk tunggal. Setiap kali pointer mentah digunakan dalam operasi aritmatika, mereka harus diganti dengan jenis buffer yang lebih aman, seperti span<T> atau vector<T>.

Pemeriksaan ini lebih ketat daripada I.13: tidak melewati zstring atau czstring jenis.

C26481 dan C26485 berasal dari aturan Profil Keselamatan Batas. Aturan ini diterapkan dalam rilis pertama Pemeriksa Pedoman Inti C++. Ini berlaku untuk kategori pointer mentah karena membantu menghindari penggunaan pointer mentah yang tidak aman.

Contoh

Sampel ini menghasilkan peringatan untuk aritmatika penunjuk.

// c26481_bad.cpp
// compile using:
// set Esp.Extensions=CppCoreCheck.dll
// cl /W3 /EHsc /permissive- /analyze /analyze:plugin EspXEngine.dll /analyze:ruleset "%VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets\CppCoreCheckBoundsRules.ruleset" c26481_bad.cpp

int main() noexcept
{
    int * from_array = new int(10);
    int * later_array = from_array + 1;
    delete[](from_array);
}