Pular para o conteúdo

Problemas com free no C

Responder tópico
  • Denunciar
  • Indicar

1. Problemas com free no C

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.

Responder tópico

2. Re: Problemas com free no C

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

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

Pra liberar só com NULL.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder