Varning CA2014: Använd inte stackalloc i loopar

.NET-kodanalysregeln CA2014 är aktiverad som standard med början i .NET 5. Den skapar en byggvarning för C#-kod där ett stackalloc-uttryck används i en loop.

Ändra beskrivning

Från och med .NET 5 innehåller .NET SDK .NET-källkodsanalyserare. Flera av dessa regler är aktiverade som standard, inklusive CA2014. Om projektet innehåller kod som bryter mot den här regeln och är konfigurerat för att behandla varningar som fel kan den här ändringen bryta mot bygget.

Regel CA2014 söker efter C#-kod där ett stackalloc-uttryck används i en loop. stackalloc allokerar minne från den aktuella stackramen. Minnet släpps inte förrän det aktuella metodanropet returnerar, vilket kan leda till stacköverskridning. Eftersom du inte kan fånga stacköverflödesundantag, kommer appen att avslutas vid stacköverflöde.

Version lanserad

5,0

  • Undvik att använda stackalloc inuti loopar. Allokera minnesblocket utanför loopen och återanvänd det i loopen. Mer information finns i CA2014.

  • Om du vill inaktivera kodanalys helt anger du EnableNETAnalyzers till false i projektfilen. Mer information finns i EnableNETAnalyzers.

Berörda API:er

Går inte att identifiera via API-analys.