Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ricardo99

Estrutura de Dados

Recommended Posts

Bom pessoal estou atualmente fazendo uma materia de estrutura de dados e gostaria de que algum membro com alguma experiencia no assunto pudesse conferir meus codigos, pois pelo fato de ser novato não consigo ver erros mais elaborados.

 

OBS: todos os codigos estao auto esplicativos e bem detalhados.

OBS: por serem ao todo 9 codigos relativamente extensos eu os postem no 4 shared caso achem necessario que eu os postem aqui me avisem (ira ocupar muito espaço)

Link: http://www.4shared.com/rar/Pi46fRN_/ESTRUTURAS_DE_DADOS.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Sugestões:

 

Leia isso: http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/'>system("pause") e fflush(stdin)

 

---------------

 

Pesquise sobre buffer overflow, é muito perigoso colocar tudo o que foi digitado em uma linha em uma array de caracteres com limite, pois se o que foi digitado for maior que o tamanho da array - 1 (-1 pois precisa do espaço para o '\0') a memória após a array vai ser sobrescrita, o que pode causar problemas inesperados ou travar o seu programa, ou mesmo todo o SO, dependendo de qual você está usando. Então, para entrada de dados, evite usar o scanf(), pois é perigoso o seu uso. Use, no mínimo, o http://www.cplusplus.com/reference/cstdio/fgets/'>fgets() da seguinte forma:

 

 

fgets(myString, strlen(myString), stdin); /* stdin pode ser substituído por uma stream de entrada qualquer, claro. */

 

Isso vai fazer com que, caso o que a pessoa digitar for maior que a string myString, somente os caracteres que cabem na string serão colocados nela, e o resto será descartado. Claro, isso é um problema também, mas buffer overflows normalmente tem implicações bem ruins, modificando o comportamento do programa após várias milhares de linhas de código, deixando impossível saber onde é o bug, ou, nos melhores casos, dando um crash que no linux é o famoso "core dumped".

 

Existem outras funções que são perigosas pelo o mesmo motivo, deixarei você dar uma pesquisada para aprender mais sobre o assunto ;)

 

-------------------------------

 

Caso eu tiver mais tempo dou uma olhada em mais arquivos, só olhei o "Fila estática". Mas, de um modo geral, está muito bom sim. Você aprendeu essas boas práticas que colocou no nome do arquivo na faculdade? Se sim, qual? Você foi ensinado muito bem, não é o que costumo ver por aqui...

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquise sobre buffer overflow, é muito perigoso colocar tudo o que foi digitado em uma linha em uma array de caracteres com limite, pois se o que foi digitado for maior que o tamanho da array - 1 (-1 pois precisa do espaço para o '\0') a memória após a array vai ser sobrescrita, o que pode causar problemas inesperados ou travar o seu programa, ou mesmo todo o SO,

 

A famosa "tela azul da morte" do windows! hahaha

 

Desculpe pela brincadeira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Revisou os ponteiros que você usa no código? Este não é um problema "menor", e sim o principal.

A estrutura é só uma coleção de dados, deve ter cuidado em como manipula elas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu disse que o estouro de memoria com o array de string era o menor dos problemas;

 

ai esta O problema como sou novato não sei se esta 100% certo por isso mandei para ca para que alguem pudesse ver se estava correto

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.