Partage via


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.

Voir aussi