Bagikan melalui


CA2014: Jangan gunakan stackalloc dalam perulangan

Properti Nilai
ID Aturan CA2014
Judul Jangan gunakan stackalloc dalam perulangan
Golongan Keandalan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai peringatan

Penyebab

Menggunakan ekspresi stackalloc C# di dalam perulangan.

Deskripsi aturan

Ekspresi stackalloc C# mengalokasikan memori dari bingkai tumpukan saat ini, dan memori tersebut mungkin tidak dirilis hingga panggilan metode saat ini kembali. Jika stackalloc digunakan dalam perulangan, itu dapat menyebabkan tumpukan meluap karena kebanjiran memori tumpukan.

Cara memperbaiki pelanggaran

Pindahkan ekspresi stackalloc di luar semua perulangan dalam metode.

Kapan harus menekan peringatan

Mungkin aman untuk menyembunyikan peringatan ketika satu atau beberapa perulangan yang berisi hanya dipanggil dalam jumlah waktu terbatas, sehingga jumlah memori keseluruhan yang dialokasikan di semua operasi stackalloc diketahui relatif kecil.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA2014
// The code that's violating the rule is on this line.
#pragma warning restore CA2014

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA2014.severity = none

Untuk menonaktifkan seluruh kategori aturan ini, atur tingkat keparahan untuk kategori ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Baca juga