Partager via


Avertissement CA2014 : N’utilisez pas stackalloc dans les boucles

La règle d’analyseur de code .NET CA2014 est activée, par défaut, à partir de .NET 5. Il 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, notamment CA2014. Si votre projet contient du code qui enfreint cette règle et est configuré pour traiter les avertissements comme des erreurs, cette modification peut interrompre votre build.

La règle CA2014 recherche le code C# dans lequel 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 par le biais d’une analyse d’API.