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:
No menu Project, clique em Properties..
A caixa de diálogo Property Pages é exibida.
Expanda a árvore de propriedades de configuração.
Expanda a árvore de C/C++.
Clique nas propriedades de linha de comando.
No Opções adicionais de adicionar /analyze:stacksize16388.
Consulte também
Tarefas
Como: Use verificações nativas em tempo de execução