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 8-ban 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.

Kapcsolódó információk