Avviso CA2014: Non usare stackalloc nei cicli

La regola dell'analizzatore del codice .NET CA2014 è abilitata, per impostazione predefinita, a partire da .NET 5. Genera un avviso relativo alla compilazione di qualsiasi codice C# in cui viene usata un'espressione stackalloc all'interno di un ciclo.

Descrizione delle modifiche

A partire da .NET 5, .NET SDK include analizzatori del codice sorgente .NET. Diverse di queste regole sono abilitate, per impostazione predefinita, tra cui CA2014. Se il progetto contiene codice che viola questa regola ed è configurato per considerare gli avvisi come errori, questa modifica potrebbe interrompere la compilazione.

La regola CA2014 cerca il codice C# in cui viene usata un'espressione stackalloc all'interno di un ciclo. stackalloc alloca memoria dallo stack frame corrente. La memoria non viene rilasciata finché non viene restituita la chiamata al metodo corrente, che può causare overflow dello stack. Poiché non è possibile intercettare le eccezioni di overflow dello stack, l'app verrà terminata in caso di overflow dello stack.

Versione introdotta

5.0

  • Evitare di usare stackalloc all'interno dei cicli. Allocare il blocco di memoria all'esterno del ciclo e riutilizzarlo all'interno del ciclo. Per altre informazioni, vedere CA2014.

  • Per disabilitare completamente l'analisi del codice, impostare EnableNETAnalyzers su false nel file di progetto. Per altre informazioni, vedere EnableNETAnalyzers.

API interessate

Non rilevabile tramite analisi dell'API.