Ostrzeżenie CA2014: Nie używaj pętli stackalloc w pętlach
Reguła analizatora kodu platformy .NET CA2014 jest domyślnie włączona, począwszy od platformy .NET 5. Tworzy ostrzeżenie kompilacji dla dowolnego kodu języka C#, w którym wyrażenie stackalloc jest używane wewnątrz pętli.
Opis zmiany
Począwszy od platformy .NET 5, zestaw .NET SDK zawiera analizatory kodu źródłowego platformy .NET. Kilka z tych reguł jest domyślnie włączonych, w tym CA2014. Jeśli projekt zawiera kod, który narusza tę regułę i jest skonfigurowany do traktowania ostrzeżeń jako błędów, ta zmiana może spowodować przerwanie kompilacji.
Reguła CA2014 szuka kodu języka C#, w którym wyrażenie stackalloc jest używane wewnątrz pętli. stackalloc przydziela pamięć z bieżącej ramki stosu. Pamięć nie zostanie zwolniona, dopóki bieżące wywołanie metody nie zostanie zwrócone, co może prowadzić do przepełnienia stosu. Ponieważ nie można przechwycić wyjątków przepełnienia stosu, aplikacja zakończy działanie w przypadku przepełnienia stosu.
Wprowadzona wersja
5,0
Zalecana akcja
Unikaj używania pętli stackalloc wewnątrz. Przydziel blok pamięci poza pętlą i użyj go ponownie wewnątrz pętli. Aby uzyskać więcej informacji, zobacz CA2014.
Aby całkowicie wyłączyć analizę kodu, ustaw wartość
EnableNETAnalyzers
nafalse
w pliku projektu. Aby uzyskać więcej informacji, zobacz EnableNETAnalyzers.
Dotyczy interfejsów API
Nie można wykryć za pośrednictwem analizy interfejsu API.