警告 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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示