Problemas comuns ao criar uma versão de compilação
Durante o desenvolvimento, você normalmente criar e testar com uma compilação de depuração do seu projeto.Se você desenvolve seu aplicativo para uma versão de compilação, você pode obter uma violação de acesso.
A lista abaixo mostra as principais diferenças entre uma depuração e uma compilação de versão (nondebug).Existem outras diferenças, mas a seguir é as principais diferenças que possam causar um falha do aplicativo em uma versão de compilação quando ele funciona em uma compilação de depuração.
Layout de heap
Compilação
Suporte de ponteiro
Otimizações
Consulte o /GZ (Catch Release-erros de compilação Debug Build) opção de compilador para obter informações sobre como detectar a versão construir erros em compilações de depuração.
Layout de heap
Layout do heap será a causa de noventa por cento dos problemas aparentes quando um aplicativo funciona na depuração, mas não a versão.
Quando você compila seu projeto para depuração, você está usando o alocador de memória de depuração.Isso significa que todas as alocações de memória tem bytes protetor, colocados em torno delas.Esses bytes de protetor de detectam uma substituição de memória.Porque o layout de heap é diferente entre a liberação e depuração versões, uma substituição de memória não pode criar problemas em uma compilação de depuração, mas pode causar efeitos catastróficos em uma versão de compilação.
Para obter mais informações, consulte Procurar sobregravação de memória e usar o Debug Build para verificar se há sobregravação de memória.
Compilação
Muitas as macros do MFC e parte do MFC implementação alterações quando você cria para o lançamento.Em particular, a macro ASSERT avalia como nada em uma versão de compilação, portanto, nenhuma parte do código encontrado no ASSERTs ser executada.Para obter mais informações, consulte Examinar ASSERT Statements.
Algumas funções são embutidas para maior velocidade na compilação de lançamento.Otimizações geralmente estão ativadas 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 versão de compilação, ponteiros isolados tem uma chance maior de apontar para a memória não inicializada em vez de apontar para informações de depuração.
Otimizações
Dependendo da natureza de determinados segmentos de código, o compilador de otimização pode gerar código inesperado.Esta é a causa menos probabilidade de problemas de compilação de versão, mas ele surgir na ocasião.Para uma solução, consulte Otimização Your Code.