Aracılığıyla paylaş


Uyarı C26481

İşaretçi aritmetiği kullanmayın. Bunun yerine span kullanın (sınır.1).

Açıklamalar

Bu denetim C++ Çekirdek Yönergeleri kuralını destekler I.13: Bir diziyi tek bir işaretçi olarak geçirmeyin. Aritmetik işlemlerde ham işaretçiler kullanıldığında, veya vector<T>gibi span<T> daha güvenli arabellek türleriyle değiştirilmelidir.

Bu denetim I.13'ten daha kısıtlayıcıdır: atlamaz zstring veya czstring tür yapmaz.

C26481 ve C26485, Sınır Güvenliği Profili kurallarından gelir. Bu kurallar C++ Çekirdek Kılavuz Denetleyicisi'nin ilk sürümünde uygulandı. Ham işaretçilerin güvenli olmamasını önlemeye yardımcı olduklarından ham işaretçiler kategorisi için geçerlidir.

Örnek

Bu örnek, işaretçi aritmetiği için bir uyarıyla sonuçlenir.

// 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);
}