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

Viz také