Compartilhar via


C6262

Aviso C6262: Função usa <constante>bytes da pilha: excede /ANALYZE: stacksize <constante>.Considere a possibilidade de mover alguns dados para pilha

Este aviso indica que o uso da pilha que excedem um limite predefinido foi detectado dentro de uma função.O dimensionar de pilha padrão para esse aviso é de 16 K bytes.Pilha, até mesmo no modo de usuário, é limitada e Falha ao confirmar uma página da pilha faz com que uma exceção de estouro de pilha.The _resetstkoflw função recupera de uma condição de estouro de pilha, permitindo que um programa continuar, em vez de apresentar um erro de exceção fatal. Se o _resetstkoflw função não é chamada, não há nenhuma página de proteção após a exceção anterior. Estouro na próxima vez que há uma pilha, não há nenhuma exceção em todos os e o processo é encerrado sem aviso.

Para corrigir esse aviso, você pode mover alguns dados para o heap ou aumentar o dimensionar de pilha.Em ambos os casos, antes de fazer alterações em seu código, você deve considerar as vantagens e desvantagens da abordagem adotada.

Exemplo

O código a seguir gera este aviso porque char buffer aloca 16382 bytes e a variável local inteiro i aloca outro 4 bytes, que juntos excedem o limite de dimensionar de pilha padrão de 16 K bytes:

#include <windows.h>
#define MAX_SIZE 16382

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

  // code...
}

O código a seguir corrige esse aviso, movendo alguns dados para pilha:

#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 corrigir esse aviso, ajustando o dimensionar da pilha, execute as seguintes etapas:

  1. No menu Project, clique em Properties..

    A caixa de diálogo Property Pages é exibida.

  2. expandir a árvore de propriedades de configuração.

  3. expandir a árvore de C/C ++.

  4. clicar nas propriedades de linha de comando.

  5. No Opções adicionais add /analyze:stacksize16388.

Consulte também

Tarefas

Como: Usar Nativo verificações em tempo de execução

Referência

/STACK (alocações de pilha)

_resetstkoflw