Aracılığıyla paylaş


Uyarı CA2014: Döngülerde stackalloc kullanmayın

.NET kod çözümleyici kuralı CA2014 varsayılan olarak .NET 5'te başlayarak etkindir. Bir döngü içinde stackalloc ifadesinin kullanıldığı herhangi bir C# kodu için bir derleme uyarısı üretir.

Açıklamayı değiştir

.NET 5'den başlayarak .NET SDK'sı .NET kaynak kodu çözümleyicilerini içerir. Ca2014 de dahil olmak üzere bu kuralların bazıları varsayılan olarak etkindir. Projeniz bu kuralı ihlal eden bir kod içeriyorsa ve uyarıları hata olarak değerlendirecek şekilde yapılandırılmışsa, bu değişiklik derlemenizi bozabilir.

Kural CA2014, bir stackalloc ifadesinin döngü içinde kullanıldığı C# kodunu arar. stackalloc geçerli yığın çerçevesinden bellek ayırır. Bellek, geçerli yöntemin çağrısı geri dönene kadar serbest bırakılmaz, bu da sonuç olarak yığın taşmalarına yol açabilir. Yığın taşması istisnalarını yakalayamazsınız, bu nedenle yığın taşması durumunda uygulama kendiliğinden sonlanır.

Sürüm kullanıma sunulmuştur

5.0

  • Döngülerin içinde stackalloc kullanmaktan kaçının. Bellek bloğunu döngünün dışına ayırın ve döngünün içinde yeniden kullanabilirsiniz. Daha fazla bilgi için bkz. CA2014.

  • Kod analizini tamamen devre dışı bırakmak için proje dosyanızda EnableNETAnalyzers öğesini false olarak ayarlayın. Daha fazla bilgi için bkz . EnableNETAnalyzers.

Etkilenen API'ler

API analizi aracılığıyla algılanamaz.