Bagikan melalui


Peringatan CA2014: Jangan gunakan stackalloc dalam perulangan

Aturan penganalisis kode .NET CA2014 diaktifkan, secara default, dimulai di .NET 5. Ini menghasilkan peringatan build untuk kode C# apa pun di mana ekspresi stackalloc digunakan di dalam perulangan.

Deskripsi perubahan

Mulai dari .NET 5, .NET SDK menyertakan penganalisis kode sumber .NET. Beberapa aturan ini diaktifkan, secara default, termasuk CA2014. Jika proyek Anda berisi kode yang melanggar aturan ini dan dikonfigurasi untuk memperlakukan peringatan sebagai kesalahan, perubahan ini dapat merusak build Anda.

Aturan CA2014 mencari kode C# di mana ekspresi stackalloc digunakan di dalam perulangan. stackalloc mengalokasikan memori dari bingkai tumpukan saat ini. Memori tidak dirilis sampai panggilan metode saat ini kembali, yang dapat menyebabkan luapan tumpukan. Karena Anda tidak dapat menangkap pengecualian luapan tumpukan, aplikasi akan berakhir jika terjadi luapan tumpukan.

Versi yang diperkenalkan

5.0

  • Hindari menggunakan stackalloc di dalam perulangan. Alokasikan blok memori di luar perulangan dan gunakan kembali di dalam perulangan. Untuk informasi selengkapnya, lihat CA2014.

  • Untuk menonaktifkan analisis kode sepenuhnya, atur EnableNETAnalyzers ke false dalam file proyek Anda. Untuk informasi selengkapnya, lihat EnableNETAnalyzers.

API yang Terpengaruh

Tidak terdeteksi melalui analisis API.