Enviado em 03/10/2008 - 18:14h
Galera, implementei um códio de teste para uma lista encadeada estática, mas está dando segmentation fault.Enviado em 03/10/2008 - 18:39h
sei que não é a pergunta mas vou dando algumas dicas ;)Enviado em 03/10/2008 - 21:53h
Olá,Enviado em 04/10/2008 - 08:40h
sim sim, o cast se faz necessário pois malloc, por padrão volta um ponteiro para void, diferentemente do new que já faz a conversão. o free também se faz necessário, pois quando dou malloc eu tiro a responsabilidade do compilador de liberar a memória, passando-a para mim. sem o free o programa irá ficar sugando memória do meu pc.Enviado em 04/10/2008 - 13:25h
o problema aqui nem está no gets(). o problema é que ao passar para a função insereNo a variável palavra (que está na a heap por ter sido alocada através de malloc) como argumento e lá dentro realizar operações de ponteiro entre ela e alguma variável que não esteja na mesma seção (heap), você está tentando cruzar a fronteira entre as diferentes áreas de memória do seu processo, e isso é inválido. L.Dados[L.Dispo].info não está na heap, portanto você não pode utilizar funções de string diretamente entre ela e palavra. ao retornar, palavra terá tentado atravessar a fronteira e retornará apontando para null. e quando for reutilizá-la, já viu...Enviado em 05/10/2008 - 10:28h
fiz isso que me disse. utilizei também a função gets, para ver o que acontecia.Enviado em 05/10/2008 - 10:44h
cast em malloc DEVE ser evitado sim, C99 prevê o tipo de retorno do malloc como void * e já trata a conversão. fazer um cast suprime mensagens do compilador e deve, portanto, ser evitado.Enviado em 05/10/2008 - 12:21h
quanto ao cast, o problema é o seguinte. como disse o colega aí em cima, o c99 define uma extensão para o tratamento dos void* para C, mas isso não está presente no C++. como seu código está meio "híbrido", misturando C e C++ e precisa ser compilado como C++, vai receber um erro de conversão inválida. aí nesse caso, a menos que você ajeite o código para C, vai precisar desse cast.Enviado em 05/10/2008 - 16:10h
"numa analogia boba, é como chegar do méxico para os eua através da alfândega ou do deserto. pela alfângdega, desde que esteja tudo ok, você entra. se for pelo deserto e te pegarem, por mais que não esteja mal intencionado, com certeza a polícia te dará um "segmentation fault"."Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Criando uma Infraestrutura para uma micro Empresa
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Discussão sobre monitoramento da integridade de arquivos (6)
Problema no boot do Linux Mint Cinnamon 22 (4)
Atualização do Google Chrome do Ubuntu [RESOLVIDO] (2)
Instalei Windows 11 e não alterou o Grub do Debian (1)
Jogos baixados na Central de Aplicativos mas que não abrem (0)