CA2014: No usar stackalloc en los bucles
Propiedad | Value |
---|---|
Identificador de la regla | CA2014 |
Título | No usar stackalloc en los bucles |
Categoría | Confiabilidad |
La corrección es problemática o no problemática | Poco problemático |
Habilitado de forma predeterminada en .NET 8 | Como advertencia |
Causa
Se ha usado la expresión stackalloc de C# dentro de un bucle.
Descripción de la regla
La expresión de C# stackalloc
asigna memoria del marco de pila actual y puede que no se libere hasta que vuelva la llamada de método actual. Si se usa stackalloc
en un bucle, puede provocar desbordamientos de pila debido al agotamiento de la memoria de la pila.
Cómo corregir infracciones
Mueva la expresión stackalloc
fuera de todos los bucles del método.
Cuándo suprimir las advertencias
Puede ser seguro suprimir la advertencia cuando el bucle o bucles contenedores se invocan solo un número finito de veces, de modo que se sabe que la cantidad total de memoria asignada en todas las operaciones stackalloc
es relativamente pequeña.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA2014
// The code that's violating the rule is on this line.
#pragma warning restore CA2014
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA2014.severity = none
Para deshabilitar toda esta categoría de reglas, establezca la gravedad de la categoría en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.