CA2014 : Ne pas utiliser stackalloc dans les boucles
Propriété | Value |
---|---|
Identificateur de la règle | CA2014 |
Titre | Ne pas utiliser stackalloc dans les boucles |
Catégorie | Fiabilité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | À titre d’avertissement |
Cause
Utilisation de l’expression stackalloc C# à l’intérieur d’une boucle.
Description de la règle
L’expression stackalloc
C# alloue de la mémoire à partir de l’image de pile actuelle, et cette mémoire peut ne pas être libérée tant que l’appel de méthode actuel n’est pas retourné. Si stackalloc
est utilisé dans une boucle, il peut entraîner des dépassements de pile en raison de l’épuisement de la mémoire de la pile.
Comment corriger les violations
Déplacez l’expression stackalloc
en dehors de toutes les boucles de la méthode.
Quand supprimer les avertissements
Vous pouvez sans risque supprimer l’avertissement lorsque la ou les boucles contenantes ne sont appelées qu’un nombre limité de fois, de sorte que la quantité globale de mémoire allouée entre toutes les opérations stackalloc
est connue pour être relativement petite.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA2014
// The code that's violating the rule is on this line.
#pragma warning restore CA2014
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA2014.severity = none
Pour désactiver la catégorie entière des règles, définissez la gravité de la catégorie sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.