CA2014: не используйте stackalloc в циклах

Свойство Значение
Идентификатор правила CA2014
Заголовок не используйте stackalloc в циклах
Категория Надежность
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 Как предупреждение

Причина

Использование выражения stackalloc в C# в цикле.

Описание правила

Выражение C# stackalloc выделяет память из текущего кадра стека, и эта память может не освободиться до тех пор, пока текущий вызов метода не вернет значение. Если stackalloc используется в цикле, это может привести к переполнению стека из-за исчерпания памяти стека.

Устранение нарушений

Переместите выражение stackalloc за пределы всех циклов метода.

Когда лучше отключить предупреждения

Вы можете отключить предупреждение, когда содержащий цикл или циклы вызываются только ограниченное число раз, так что общий объем памяти, выделенной для всех операций stackalloc, считается относительно небольшим.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA2014
// The code that's violating the rule is on this line.
#pragma warning restore CA2014

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA2014.severity = none

Чтобы отключить эту всю категорию правил, задайте уровень серьезности для категории none в файле конфигурации.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

См. также