Teilen über


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.

Siehe auch