VC ++ 6.0 Acesso ao vetor Crash. Bug conhecido?
Pergunta
Estou tentando usar um std :: vetor <> :: const_iterator e recebo um acidente de 'violação de acesso'. Parece que o código de vetor Std :: está travando quando usa seu próprio interno First_
e Last_
Ponteiros. Presumivelmente, este é um bug conhecido. Espero que alguém possa me apontar para a solução alternativa correta. Provavelmente é relevante que a função de travamento seja chamada de uma biblioteca externa?
const Thing const* AClass::findThing (const std::string& label) const
{
//ThingList_.begin() blows up at run time. Compiles fine.
for (std::vector<Thing*>::const_iterator it = ThingList_.begin(); it != ThingList_.end(); ++it) {
//Irrelevant.
}
return 0;
}
Simplesmente chamando ThingList_.size()
também falha.
Este é o SP6, se importa.
Solução
Se você estiver passando por objetos C ++ através dos limites da biblioteca externa, deve garantir que todas as bibliotecas estejam usando a mesma biblioteca de tempo de execução (em particular, o mesmo alocador de heap). Na prática, isso significa que todas as bibliotecas devem estar vinculadas à versão DLL do MSVCRT.
Outras dicas
É quase certamente um bug no seu código e não em vetor de std ::. Esse código é usado por muitos projetos para ter um bug tão fácil de reproduzir.
O que provavelmente está acontecendo é que a variável thniglist_ foi corrompida de alguma forma. A matriz subjacente foi acessada diretamente e/ou modificada?
Concordo com Jared que provavelmente está em seu código, nunca, e você deve ter certeza de que suas libs STL estão atualizadas.
o Dinkumware O site possui os arquivos corrigidos que você precisa.
Você deve atualizar apenas para estar seguro