funcao libera

Re: funcao libera

por Francisco Reverbel -
Número de respostas: 0
Isso mesmo, Kaonan. Isto é equivalente ao que eu escrevi acima:
... /* neste ponto o polinômio referenciado por v ainda não foi liberado */
aux = v; /* salva numa variável auxiliar o polinomio referenciado por v */
v = multiplica(v, v); /* atualiza v com o resultado da operação (soma, produto, tanto faz...) */
libera(aux); /* libera o polinômio anteriormente referenciado por v */
Quanto ao que você disse sobre "ser mais eficiente", não é só uma questão de eficiência... Está errado usar o p depois do libera(p)!

Você parece estar supondo que a chamada libera(p) atribui NULL a p, mas para fazer isso ela precisaria receber um ponteiro para o ponteiro p... Sem receber um ponteiro para ponteiro, a função libera pode até mexer na sua cópia do ponteiro p, mas isso não terá nenhum efeito sobre o ponteiro original!