Compartilhar via


Problemas comuns ao criar uma compilação de versão

Durante o desenvolvimento, você normalmente cria e teste com uma compilação de depurar do seu projeto.Se, em seguida, criar seu aplicativo para uma versão de compilação, você poderá receber uma violação de acesso.

A lista a seguir mostra as principais diferenças entre uma depurar e uma versão (nondebug) de compilação.Existem outras diferenças, mas a seguir é as principais diferenças que possam causar um falha do aplicativo em uma compilação de versão quando trabalha em uma compilação de depurar.

  • Layout de heap

  • Compilação

  • Suporte de ponteiro

  • Otimizações

Consulte o /GZ (catch versão-build erros na compilação de depurar)baseia-se opção do compilador para obter informações sobre como capturar erros de compilação de lançamento na depurar.

Layout de heap

Layout de heap será a causa de cerca de 90 % dos problemas aparentes quando um aplicativo funciona na depurar, mas não a versão.

Quando você compilação seu projeto para depurar, você está usando o alocador de memória de depurar.Isso significa que todas as alocações de memória proteção bytes colocados em torno delas.Esses bytes de protetor de detectam uma substituir de memória.Como layout de pilha é diferente entre lançamento e depurar versões, uma substituir de memória não pode criar quaisquer problemas em uma compilação de depurar, mas pode causar efeitos catastróficos em uma versão de compilação.

Para obter mais informações, consulte Verificação de substituir memória and Usar o depurar compilação para verificar se há memória substituir.

Compilação

Muitas das macros MFC e parte do MFC implementação alterações quando você cria para versão.Em particular, a macro declaração avalia como nada em uma compilação de versão para que nenhum código de encontrado na ASSERTs será executada.Para obter mais informações, consulte Examine as instruções de declaração.

Algumas funções são embutidas para velocidade maior na compilação de versão.Otimizações geralmente são ligadas em uma versão de compilação.Um alocador de memória diferentes também está sendo usado.

Suporte de ponteiro

A falta de informações de depuração remove o preenchimento do seu aplicativo.Em uma compilação de versão, ponteiros isolados terá a chance maior de apontar para memória não inicializada em vez de apontar para informações de depurar.

Otimizações

Dependendo da natureza de determinados segmentos de código, compilador de otimização pode gerar código inesperado.Isso é a menos provável causa de problemas de compilação de versão, mas ele surgir na ocasião.Para obter uma solução, consulte Otimizando seu código.

Consulte também

Referência

Compilações de versão

Corrigindo problemas de compilação de versão