iagoac / mc202

Disciplina MC202 - Estruturas de Dados
GNU General Public License v3.0
17 stars 13 forks source link

erro nos teste 3,4,5,6,7 #41

Closed luizsimioni closed 3 years ago

luizsimioni commented 4 years ago

Está dando este erro no teste 3 quando rodo no meu computador mais quando tentei no susy está correto: free(): double free detected in tcache 2 Aborted make: *** [Makefile:30: testar_programa] Error 134 No meu código tem a função free() depois de todo o procedimento, tenho que coloca-la durante o procedimento ou pode ser apenas no final mesmo? Nos testes 4,6,7 apenas alguns valores estão dando errado no susy, No teste 5 quando rodei no susy está dando erro de processamento provavelmente memória corrompida (código 134). Alguma ideia do problema no meu código? Estou usando a função Realloc, tem algum problema?

iagoac commented 4 years ago

@LuizluHenrique

free(): double free detected in tcache

isso acontece quando vc dá free() em uma variável (vetor, matriz) que já foi desalocada previamente.

tenho que coloca-la durante o procedimento ou pode ser apenas no final mesmo?

não faz sentido você colocar o free() no final do seu código, pois, assim que o programa é terminado, todo o espaço de memória reservado por ele é liberado automaticamente pelo sistema operacional. No meu ponto de vista, isso só gera erros.

No teste 5 quando rodei no susy está dando erro de processamento provavelmente memória corrompida (código 134).

Diversas pessoas estão tendo/tiveram este mesmo problema. Já ouve uma pequena discussão sobre este erro aqui. Veja se isto consegue te ajudar.

Estou usando a função realloc, tem algum problema?

Nenhum problema. Aliás, o ideal realmente é a utilização do realloc

luizsimioni commented 4 years ago

Mais mesmo quando eu não utilizo free() em nem um lugar ele esta aparecendo este erro.

Tomikins commented 4 years ago

A função realloc usa o free() no código dela, seu erro deve estar nos parametros dela, ou na hora de zerar seu vetor realocado.

On Sun, May 3, 2020, 17:33 LuizluHenrique notifications@github.com wrote:

Mais mesmo quando eu não utilizo free() em nem um lugar ele esta aparecendo este erro.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/iagoac/mc202/issues/41#issuecomment-623177232, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMXPEV57X7WSNAZFPACU5P3RPXILBANCNFSM4MYHNLNA .

iagoac commented 4 years ago

Sim, também acredito que o erro está nos parâmetros da função. Dê uma olhada em como ela funciona na documentação da linguagem

luizsimioni commented 4 years ago

Todos os testes estão dando certo mais quando estou submetendo ao susy esta toda hora dando algum tipo de problema. As vezes fala que a resposta esta errada em alguns testes mais quando testo no meu computador a resposta sai tudo correto. E as vezes continua dando o erro de processamento provavelmente memória corrompida (código 134). Mas não acredito que esteja zerando parte do ponteiro que não existe. já testei de varias formas os meus While para zerar o vetor, com <,<= e sempre da esses erros. Teve uma vez que submeti e deu apenas o erro (134). Não sei mais o que fazer

luizsimioni commented 4 years ago

Pior que não consigo testar porque sempre da correto. Apenas consigo testar submetendo ao susy. Mais ja submeti mais de 10 vezes, estou com medo de passar dos 20

luizsimioni commented 4 years ago

Consegui professor, muito obrigado. Acho que estava faltando o (int*) nas funções realloc.

iagoac commented 4 years ago

@LuizluHenrique fico feliz que tenha dado certo.

Esta foi a única modificação necessária? Eu havia proposto essa modificação para diversos outros alunos aqui no git e alguns deles disseram que não foi o suficiente