Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A regra do analisador de código .NET CA2014 está habilitada, por padrão, a partir do .NET 5. Ele produz um aviso de build para qualquer código C# em que uma expressão stackalloc é usada dentro de um loop.
Descrição da alteraçã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 CA2014. Se o projeto contiver código que viole essa regra e estiver configurado para tratar avisos como erros, essa alteração poderá interromper o build.
A regra CA2014 procura o código C# em que uma expressão stackalloc é usada dentro de um loop. stackalloc aloca memória do registro de ativação. A memória não será liberada até que a chamada do método atual retorne, o que poderá resultar em excedentes de pilha. Como não é possível capturar as exceções de excedente de pilha, o aplicativo encerrará em caso de excedente de pilha.
Versão introduzida
5,0
Ação recomendada
Evite usar stackalloc nos 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
EnableNETAnalyzerscomofalseno arquivo do projeto. Para obter mais informações, consulte EnableNETAnalyzers.
APIs afetadas
Não detectável por meio da análise de API.