.NET コード アナライザー規則 CA2014 は、.NET 5 以降で既定で有効になっています。 stackalloc 式がループ内で使用されている C# コードに対してビルド警告が生成されます。
変更の説明
.NET 5 以降、.NET SDK には .NET ソース コード アナライザーが含まれています。 既定では、 CA2014 を含む、これらの規則の一部が有効になっています。 プロジェクトにこの規則に違反するコードが含まれており、警告をエラーとして扱うように構成されている場合、この変更によってビルドが中断される可能性があります。
規則 CA2014 は、 stackalloc 式 がループ内で使用される C# コードを検索します。 stackalloc は、現在のスタック フレームからメモリを割り当てます。 メモリは、現在のメソッド呼び出しが返されるまで解放されず、スタック オーバーフローが発生する可能性があります。 スタック オーバーフロー例外をキャッチできないため、スタック オーバーフローの場合、アプリは終了します。
導入されたバージョン
5.0
推奨されるアクション
ループ内で stackalloc を使用しないでください。 ループの外側にメモリ ブロックを割り当て、ループ内で再利用します。 詳細については、 CA2014 を参照してください。
コード分析を完全に無効にするには、
EnableNETAnalyzers
をプロジェクト ファイル内のfalse
に設定します。 詳細については、「 EnableNETAnalyzers」を参照してください。
影響を受ける API
API 分析では検出できません。
.NET