Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Bug de alocação de memória

Estou com um bug que não permite mais eu executar o programa. Talvez eu tenha definido meu map "errados" ("chutes_errados" nas aulas) de alguma forma errada em algum lugar, ou usado incorretamente os métodos ".find", ".end" ou ".at".

Ele para o programa e abre a map, mostra esse erro: Erro execução sem tratamento: std::out_of_range no local de memóriaAlguém sabe que tipo de problema é esse? Vou tentar resolver desfazendo as alterações, voltando as definições para variáveis não constantes, mas gostaria de entender o motivo desse bug para não se repetir.

1 resposta
solução!

Já consegui resolver, mas respondendo aqui para caso alguém se depare com o mesmo erro:

Eu estava declarando, em outra função, a de "imprime_palavra" nas aulas, o meu if estava apenas com a condição "chutou.at(letra)" . Quando o programa roda, e vai imprimir a palavra, ele procura letra por letra da palavra secreta. O método ".at" retorna o erro out_of_range caso o índice não exista no meu mapa, e não existe mesmo, pois na primeira execução até, o map "chutou" está vazio, então ele retornaria isso de qualquer forma.

Pra contornar a situação, usei a mesma lógica apresentada na função "chuta", usando a condição do if: "(chutou.find(letra) == chutou.end() || !chutou.at(letra))".

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software