Partilhar via


Aviso CA2014: Não use stackalloc em loops

A regra CA2014 do analisador de código .NET está habilitada, por padrão, a partir do .NET 5. Ele produz um aviso de compilação para qualquer código C# onde uma expressão stackalloc é usada dentro de um loop.

Alterar descrição

A partir do .NET 5, o SDK do .NET inclui analisadores de código-fonte do .NET. Várias dessas regras estão habilitadas, por padrão, incluindo a CA2014. Se o seu projeto contém código que viola essa regra e está configurado para tratar avisos como erros, essa alteração pode quebrar sua compilação.

A regra CA2014 procura código C# onde uma expressão stackalloc é usada dentro de um loop. StackAlloc aloca memória do quadro de pilha atual. A memória não é liberada até que a chamada de método atual retorne, o que pode levar a estouros de pilha. Como não é possível capturar exceções de estouro de pilha, a aplicação será encerrada em caso de estouro de pilha.

Versão introduzida

5.0

  • Evite usar stackalloc dentro de loops. Aloque o bloco de memória fora do loop e reutilize-o dentro do loop. Para obter mais informações, consulte CA2014.

  • Para desativar completamente a análise de código, defina EnableNETAnalyzers como false no arquivo de projeto. Para obter mais informações, consulte EnableNETAnalyzers.

APIs afetadas

Não detetável através da análise API.