Compartilhar via


C6262

Aviso C6262: Função usa <constant> bytes de pilha: excede /ANALYZE: stacksize <constant>. Considere a movimentação de alguns dados para o heap

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

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

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 exceder o limite de tamanho 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 a 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 tamanho da pilha, siga estas etapas:

  1. No menu Project, clique em Properties..

    A caixa de diálogo Property Pages é exibida.

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

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

  4. Clique nas propriedades de linha de comando.

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

Consulte também

Tarefas

Como: Use verificações nativas em tempo de execução

Referência

/ PILHA (alocações de pilha)

_resetstkoflw