Problemas com free no C

1. Problemas com free no C

douglas
dsbonafe

(usa Fedora)

Enviado em 27/03/2015 - 12:29h

Estou com um problema para dar free no C. Gostaria de saber porque o programa quebra quando cloco o free na seguinte posição.
Afinal de contas, depois que eu usei o ponteiro dentro do else, posso liberá-lo ali, não?
....
while(p != NULL){

if(p->next) //operação com p
else
{
estrutura* ptr= (estrutura*) malloc(sizeof(estrutura));
ptr->name = p->name;
ptr->value = p->value;
ptr->next = NULL;
if (genericParameters == NULL)
{
genericParameters = newP;
}
else
{
parameters* last = genericParameters;
while (last->next != NULL) {
last = last->next;
}
last->next = ptr;
}
free(ptr);
}
p = p->next;
}
//mais nada aqui
}

obrigado.


  


2. Re: Problemas com free no C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/03/2015 - 08:32h

dsbonafe escreveu:

Estou com um problema para dar free no C. Gostaria de saber porque o programa quebra quando cloco o free na seguinte posição.
Afinal de contas, depois que eu usei o ponteiro dentro do else, posso liberá-lo ali, não?


Não. A função free() não libera a variável ponteiro, mas sim a região de memória para onde ela aponta.


3. Re: Problemas com free no C

Igor Morais
igormorais

(usa Gentoo)

Enviado em 28/03/2015 - 09:54h

Pra liberar só com NULL.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts