Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İş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 span<T>gibi vector<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);
}