次の方法で共有


警告 CA2014: ループで stackalloc を使用しない

.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 分析では検出できません。