CA2014: Nepoužívejte stackalloc ve smyčce
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2014 |
Název | Nepoužívat stackalloc ve smyčkách |
Kategorie | Spolehlivost |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako upozornění |
Příčina
Použití výrazu stackalloc v jazyce C# uvnitř smyčky
Popis pravidla
Výraz jazyka C# stackalloc
přiděluje paměť z aktuálního rámce zásobníku a tato paměť se nemusí uvolnit, dokud se volání aktuální metody nevrátí. Pokud stackalloc
se používá ve smyčce, může to vést k přetečení zásobníku kvůli vyčerpání paměti zásobníku.
Jak opravit porušení
stackalloc
Přesuňte výraz mimo všechny smyčky v metodě.
Kdy potlačit upozornění
Upozornění může být bezpečné potlačit při vyvolání smyčky nebo smyček obsahující pouze konečný počet, aby bylo známo, že celkové množství paměti přidělené napříč všemi stackalloc
operacemi je poměrně malé.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA2014
// The code that's violating the rule is on this line.
#pragma warning restore CA2014
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA2014.severity = none
Chcete-li tuto celou kategorii pravidel zakázat, nastavte závažnost kategorie na none
hodnotu v konfiguračním souboru.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.