Share via


경고 CA2014: 루프에서 stackalloc을 사용하지 마세요.

.NET 코드 분석기 규칙 CA2014는 .NET 5부터 기본적으로 사용됩니다. stackalloc 식이 루프 내에서 사용되는 모든 C# 코드에 대해 빌드 경고를 생성합니다.

변경 내용 설명

.NET 5부터 .NET SDK에는 .NET 소스 코드 분석기가 포함됩니다. CA2014를 포함하여 해당 규칙 중 여러 개가 기본적으로 사용됩니다. 해당 규칙을 위반하는 코드가 프로젝트에 포함되고 프로젝트가 경고를 오류로 처리하도록 구성된 경우 해당 변경으로 인해 빌드의 호환성이 손상될 수 있습니다.

규칙 CA2014는 stackalloc 식이 루프 내에서 사용되는 C# 코드를 찾습니다. stackalloc는 현재 스택 프레임에서 메모리를 할당합니다. 현재 메서드 호출이 반환될 때까지 메모리가 해제되지 않아 스택 오버플로가 발생할 수 있습니다. 스택 오버플로 예외를 catch할 수 없기 때문에 스택 오버플로가 발생할 경우 앱이 종료됩니다.

도입된 버전

5.0

  • 루프 내에서 stackalloc를 사용하지 않습니다. 루프 외부에서 메모리 블록을 할당하고 루프 내부에서 재사용합니다. 자세한 내용은 CA2014를 참조하세요.

  • 코드 분석을 완전히 사용하지 않으려면 프로젝트 파일에서 EnableNETAnalyzersfalse로 설정합니다. 자세한 내용은 EnableNETAnalyzers를 참조하세요.

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.