CA2014: Ne használjon stackallocot hurkokban
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2014 |
Cím | Ne használjon stackallocot hurkokban |
Kategória | Megbízhatóság |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 9-ben | Figyelmeztetésként |
Ok
A C# stackalloc kifejezés használata egy cikluson belül.
Szabály leírása
A C# stackalloc
-kifejezés lefoglalja a memóriát az aktuális veremkeretből, és előfordulhat, hogy a memória nem szabadul fel, amíg az aktuális metódushívás vissza nem tér. Ha stackalloc
hurokban használják, az a veremmemória kimerítése miatt túlcsordulásokhoz vezethet.
Szabálysértések kijavítása
A kifejezés áthelyezése a stackalloc
metódus összes ciklusán kívülre.
Mikor kell letiltani a figyelmeztetéseket?
Biztonságos lehet a figyelmeztetés mellőzése, ha a ciklusokat vagy hurkokat csak véges számú alkalommal hívja meg a rendszer, így az összes stackalloc
művelethez lefoglalt memória teljes mennyisége viszonylag kicsi.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA2014
// The code that's violating the rule is on this line.
#pragma warning restore CA2014
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA2014.severity = none
A teljes szabálykategória letiltásához állítsa be a kategória súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.