默认情况下,从 .NET 5 开始,启用 .NET 代码分析器规则 CA2014 。 对于任何在循环中使用 stackalloc 表达式的 C# 代码,它都会生成一个构建警告。
更改描述
从 .NET 5 开始,.NET SDK 包括 .NET 源代码分析器。 默认情况下,会启用其中几个规则,包括 CA2014。 如果项目包含违反此规则的代码,并且配置为将警告视为错误,则此更改可能会中断生成。
规则 CA2014 查找在循环中使用 stackalloc 表达式 的 C# 代码。 stackalloc 从当前堆栈帧分配内存。 在当前方法调用返回之前不会释放内存,这可能会导致堆栈溢出。 由于无法捕获堆栈溢出异常,因此应用将在堆栈溢出时终止。
已引入的版本
5.0
建议的措施
避免在循环中使用 stackalloc 。 在循环外部分配内存块,并在循环中重复使用它。 有关详细信息,请参阅 CA2014。
若要完全禁用代码分析,请在项目文件中设置为
EnableNETAnalyzers
false
。 有关详细信息,请参阅 EnableNETAnalyzers。
受影响的 API
无法通过 API 分析检测。