Sdílet prostřednictvím


Upozornění CA2014: Nepoužívejte ve smyčce stackalloc

Pravidlo analyzátoru kódu .NET CA2014 je ve výchozím nastavení povolené od verze .NET 5. Vygeneruje upozornění sestavení pro jakýkoli kód jazyka C#, ve kterém se uvnitř smyčky používá výraz stackalloc .

Změna popisu

Počínaje rozhraním .NET 5 obsahuje sada .NET SDK analyzátory zdrojového kódu .NET. Ve výchozím nastavení je povoleno několik z těchto pravidel, včetně CA2014. Pokud váš projekt obsahuje kód, který porušuje toto pravidlo a je nakonfigurovaný tak, aby zacházel s upozorněními jako s chybami, může tato změna přerušit sestavení.

Pravidlo CA2014 hledá kód jazyka C#, ve kterém se uvnitř smyčky používá výraz stackalloc. stackalloc přiděluje paměť z aktuálního rámce zásobníku. Paměť se nevolá, dokud se nevrátí volání aktuální metody, což může vést k přetečení zásobníku. Protože nemůžete zachytit výjimky přetečení zásobníku, aplikace se ukončí v případě přetečení zásobníku.

Zavedená verze

5,0

  • Nepoužívejte stackalloc uvnitř smyček. Přidělte blok paměti mimo smyčku a znovu ho použijte uvnitř smyčky. Další informace najdete v tématu CA2014.

  • Pokud chcete analýzu kódu úplně zakázat, nastavte EnableNETAnalyzers v false souboru projektu. Další informace naleznete v tématu EnableNETAnalyzers.

Ovlivněná rozhraní API

Nedetekovatelné prostřednictvím analýzy rozhraní API.