iagoac / mc202

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

[lab03] Erro de memória ao criar lista #60

Closed ghost closed 4 years ago

ghost commented 4 years ago

Bom dia,

Estou tendo problemas com manejo de memória no meu programa.

Quando eu testei para os exemplos que estão no pdf do lab, os resultados foram os esperados. Porém, em nenhum teste do Susy meu programa passou, segue o que ele apontou: image Há de se ressaltar que, no teste 1, estes resultados que divergiram sucedem vários resultados corretos

Após isso, eu tentei usar um programa similar ao valgrind para depurar onde estava errando com a memória. Baixei o programa Dr. Memory, pois não utilizo o Linux para conseguir usar o valgrind. Assim, o Dr. Memory apontou o seguinte: image De acordo com a documentação do software: "If the application reads from addressable memory that has not been written to since it was allocated, Dr. Memory reports an "uninitialized read" error" (https://dynamorio.org/drmemory_docs/page_uninit.html)

Ok, tenho um problema na minha função que cria a lista circular duplamente encadeada. Depois de muito tempo analisando esta função, ainda não consigo enxergar o meu problema. Segue a função: image Detalhe de que na minha main, eu chamo esta função antes de realizar qualquer operação na lista.

Struct client: image

ghost commented 4 years ago

O programa estava apontando para um erro no lugar errado.

iagoac commented 4 years ago

@Muelas-234944 antes de te responder, só te pedir uma coisa: por favor, sempre que postar código, copie o texto e cole aqui no formato de algoritmo ao invés de postar screenshots de seu arquivo.
Desta forma, fica muito mais fácil para que eu, um dos PAD/PED ou um colega te ajudar.


Quando eu testei para os exemplos que estão no pdf do lab, os resultados foram os esperados

Os exemplos do PDF são pequenos exemplos, simples e fáceis de serem resolvidos. Eles estão lá só para mostrar um exemplo de entrada e saída e ilustrar o comportamento esperado do algoritmo.
Seu código funcionar naqueles pequenos exemplos não quer dizer muita coisa, pois eles não conseguem capturar a complexidade total do problema que vocês estão resolvendo. Por isso é que temos diversos casos de teste (e casos de teste escondidos).

Há de se ressaltar que, no teste 1, estes resultados que divergiram sucedem vários resultados corretos

Não entendi seu questionamento

iagoac commented 4 years ago

Bem, já que você fechou a issue, acredito que esteja tudo corrigido.
Caso você tenha mais dúvidas, favor abrir outra issue