Share via


Avertissement CA2014 : ne pas utiliser stackalloc dans des boucles

La règle d’analyseur de code .NET CA2014 est activée par défaut à partir de .NET 5. Elle génère un avertissement de build pour tout code C# où une expression stackalloc est utilisée à l’intérieur d’une boucle.

Description de la modification

À compter de .NET 5, le Kit de développement logiciel (SDK) .NET inclut des analyseurs de code source .NET. Plusieurs de ces règles sont activées par défaut, y compris CA2014. Si votre projet contient du code qui enfreint cette règle et est configuré pour traiter les avertissements comme des erreurs, ce changement peut casser votre build.

La règle CA2014 recherche le code C# où une expression stackalloc est utilisée à l’intérieur d’une boucle. stackalloc alloue de la mémoire à partir du frame de pile actuel. La mémoire n’est pas mise en production tant que l’appel de méthode actuel n’est pas retourné, ce qui peut entraîner des dépassements de la capacité de la pile. Étant donné que vous ne pouvez pas intercepter les exceptions de dépassement de la capacité de la pile, l’application s’arrête en cas de dépassement de la capacité de la pile.

Version introduite

5,0

  • Évitez d’utiliser stackalloc à l’intérieur des boucles. Allouez le bloc de mémoire en dehors de la boucle et réutilisez-le à l’intérieur de la boucle. Pour plus d’informations, consultez CA2014.

  • Pour désactiver complètement l’analyse du code, définissez EnableNETAnalyzers sur false dans votre fichier projet. Pour plus d’informations, consultez EnableNETAnalyzers.

API affectées

Non détectable via l’analyse des API.