Compartir a través de


C6262

Actualización: noviembre 2007

C6262

Advertencia C6262: La función utiliza <constante> bytes de la pila: supera /analyze:stacksize<constante>. Considere mover algunos datos al montón

Esta advertencia indica que se ha detectado dentro de una función un uso de la pila que excede un umbral preestablecido. El tamaño de pila predeterminado para esta advertencia es de 16 Kbytes. La pila está limitada incluso en modo de usuario y un error al confirmar una página de la pila provoca una excepción de desbordamiento de pila. La función _resetstkoflw se recupera de una condición del desbordamiento de pila, lo que permite que el continúe en lugar de generar un error de excepción grave. Si no se llama a la función _resetstkoflw, no queda ninguna página de protección después de la excepción anterior. La próxima vez que haya un desbordamiento de pila, no habrá ninguna excepción en absoluto y el proceso finalizará sin avisar.

Para corregir esta advertencia, puede mover datos al montón o aumentar el tamaño de la pila. En cualquier caso, antes de realizar cambios en el código, es conveniente plantearse las ventajas y desventajas del enfoque que adopte.

Ejemplo

El código siguiente genera esta advertencia porque char buffer asigna 16382 bytes, y la variable de entero local i asigna otros 4 bytes, que sumados superan el límite predeterminado del tamaño de la pila, que es de 16 Kbytes:

#include <windows.h>
#define MAX_SIZE 16382

void f( )
{
  int i;
  char buffer[MAX_SIZE];
  
  i = 0;
  buffer[0]='\0';

  // code...
}

El código siguiente corrige esta advertencia moviendo algunos datos al montón:

#include <stdlib.h>   
#include <malloc.h>
#define MAX_SIZE 16382
void f( )
{
  int i;
  char *buffer;

  i = 0;
  buffer = (char *) malloc( MAX_SIZE );
  if (buffer != NULL) 
  {
    buffer[0] = '\0';
    // code...
    free(buffer);
  }
}

Para corregir esta advertencia ajustando el tamaño de la pila, siga estos pasos:

  1. En el menú Proyecto, haga clic en Propiedades.

    Aparece el cuadro de diálogo Páginas de propiedades.

  2. Expanda el árbol Propiedades de configuración.

  3. Expanda el árbol C/C++.

  4. Haga clic en las propiedades de Línea de comandos.

  5. En Opciones adicionales agregue /analyze:stacksize16388.

Vea también

Tareas

Cómo: Utilizar comprobaciones nativas en tiempo de ejecución

Referencia

/STACK (Asignaciones de la pila)

_resetstkoflw