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