CA2014: Verwenden Sie stackalloc nicht in Schleifen.
Eigenschaft | Wert |
---|---|
Regel-ID | CA2014 |
Titel | Verwenden Sie stackalloc nicht in Schleifen. |
Kategorie | Zuverlässigkeit |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 8 aktiviert | Als Warnung |
Ursache
Verwenden des C# stackalloc-Ausdrucks in einer-Schleife.
Regelbeschreibung
Der C# stackalloc
-Ausdruck ordnet Speicher aus dem aktuellen Stapelrahmen zu und der Speicher kann erst freigegeben werden, wenn der aktuelle Methodenaufruf zurückgegeben wurde. Wenn stackalloc
in einer Schleife verwendet wird, kann dies zu Stapelüberläufen führen, weil der Stapelspeicher erschöpft ist.
Behandeln von Verstößen
Verschieben Sie den stackalloc
-Ausdruck außerhalb aller Schleifen in der Methode.
Wann sollten Warnungen unterdrückt werden?
Es ist möglicherweise sicher, die Warnung zu unterdrücken, wenn die enthaltende Schleife oder Schleifen nur eine begrenzte Anzahl von Vorkommen aufgerufen werden, sodass die Gesamtmenge des Arbeitsspeichers, die allen stackalloc
-Vorgängen zugeordnet ist, relativ klein ist.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA2014
// The code that's violating the rule is on this line.
#pragma warning restore CA2014
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_diagnostic.CA2014.severity = none
Um diese gesamte Kategorie von Regeln zu deaktivieren, legen Sie den Schweregrad für die Kategorie in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.