Предупреждение CA2014: не используйте stackalloc в циклах
Начиная с .NET 5 правило CA2014 анализатора кода .NET включено по умолчанию. Оно создает предупреждение сборки для любого кода C#, в котором используется выражение stackalloc внутри цикла.
Описание изменения
Начиная с .NET 5 пакет SDK для .NET включает анализаторы исходного кода .NET. Некоторые из этих правил включены по умолчанию, в том числе CA2014. Если проект содержит код, нарушающий это правило и настроенный на обработку предупреждений как ошибок, это изменение может нарушить сборку.
Правило CA2014 ищет код C#, в котором выражение stackalloc используется внутри цикла. stackalloc выделяет память из текущего кадра стека. Память не освобождается до тех пор, пока не будет возвращен текущий вызов метода, что может привести к переполнению стека. Так как вы не можете перехватывать исключения переполнения стека, в таком случае работа приложения будет завершена.
Представленные версии
5,0
Рекомендуемое действие
Старайтесь не использовать stackalloc в циклах. Выделяйте блок памяти за пределами цикла и используйте его повторно внутри цикла. См. раздел CA2014.
Чтобы полностью отключить анализ кода, задайте для параметра
EnableNETAnalyzers
значениеfalse
в файле проекта. Дополнительные сведения см. в разделе EnableNETAnalyzers.
Затронутые API
Невозможно обнаружить с помощью анализа API.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по