Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Durante o desenvolvimento, você geralmente criará e testará com uma compilação de depuração do seu projeto. Se você criar seu aplicativo para uma compilação de lançamento, poderá ocorrer uma violação de acesso.
A lista abaixo mostra as principais diferenças entre um build de depuração e um build de release (não depuração). Há outras diferenças, mas a seguir estão as principais diferenças que fariam com que um aplicativo falhasse na versão final quando ele funciona em um build de depuração.
Consulte a opção do compilador /GZ (Capturar erros de build de liberação em builds de depuração) para obter informações sobre como capturar erros de build de liberação em builds de depuração.
Layout do heap
O layout do heap será a causa dos problemas aparentes em cerca de noventa por cento dos casos quando um aplicativo funcionar no modo de depuração, mas não no modo de liberação.
Ao criar seu projeto para depuração, você usará o alocador de memória de depuração. Isso significa que todas as alocações de memória têm bytes de proteção colocados ao redor. Esses bytes de proteção detectam uma substituição de memória. Como o layout de heap é diferente entre as versões de depuração e de release, uma sobrescrita de memória pode não causar problemas em uma compilação de depuração, mas pode ter efeitos catastróficos em uma compilação de release.
Para obter mais informações, consulte Verificar se há substituição de memória e Usar a versão de depuração para verificar se há substituição de memória.
Compilação
Muitas das macros MFC e muito da implementação do MFC mudam quando você compila para a versão de lançamento. Em particular, a macro ASSERT é avaliada como nada em uma compilação de release, portanto, nenhum código encontrado em ASSERTs será executado. Para obter mais informações, consulte Examinar declarações ASSERT.
Algumas funções são embutidas para aumentar a velocidade na compilação de versão. As otimizações geralmente são ativadas em uma compilação de versão. Um alocador de memória diferente também será usado.
Suporte ao ponteiro
A falta de informações de depuração remove o padding do aplicativo. Em uma compilação de lançamento, ponteiros perdidos têm maior chance de apontar para 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 um código inesperado. Essa é a causa menos provável de problemas de compilação de versão, mas ela surge em algumas ocasiões. Para obter uma solução, consulte Otimizando seu código.