Curiosidade + problema no free

Curiosidade + problema no free

por Karina Silva -
Número de respostas: 3
Oi, gostaria de saber porque qndo a gente tenta imprimir uma palavra, por exemplo:
puts("Olá");
no terminal aparece um monte de letra estranha, mas qndo guardamos o nome do filme e mandamos imprimir, ele saiu direitinho...

Além disso, qndo libero a memória, eu faço um free no nome do filme e depois na estrutura. Dai, eu tenho a seguinte mensagem:
*** glibc detected *** free(): invalid pointer: 0x0804b32c ***
abortado, o q isso significa?
C eu naum faço free no nome, ele fica normal.
Em resposta à Karina Silva

Re: Curiosidade + problema no free

por Marco Dimas Gubitoso -
Um puts("Olá") ou puts com qualquer outra string literal nunca deveria produzir um monte de letras estranhas. Talvez, se vc  tiver um ponteiro perdido e muito azar, pode acontecer, mas mesmo assim é estranho.

No caso do free, isso pode significar duas coisas: ou vc está tentando liberar uma região que não foi alocada dinâmincamente (com malloc), ou está  liberando o mesmo lugar mais de uma vez.  Dê uma conferida no seu programa.

Gubi
Em resposta à Karina Silva

Re: Curiosidade + problema no free

por Vanessa Sabino -
Se o problema for nas letras acentuadas é porque existem diversas codificações para os caracteres. Se você escreve seu programa e compila com uma codificação e o seu sistema operacional usa outra durante a execução acaba dando problema. Mas quando você faz seu programa ler determinado texto e depois imprimir novamente, ele usará a mesma codificação nessas duas operações, então aparece normalmente.