Ir para o conteúdo
magic

Como completamente libertar memória de uma lista ligada

Mensagens Recomendadas

magic

Imaginemos que tenho uma estrutura deste género:

typedef struct sArrayG
{
int nelems;
int *array;
}ArrayG;
Esta estrutura devera ser um array alocado dinamicamente, que em cada posição deverá conter um apontador para outro array alocado dinamicamente. A minha duvida é como apagar toda a estrutura?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

é impossível responder porque o código apresentado não corresponde à descrição do pretendido

o essencial para implementar o descrito é:

- ter uma estrutura com, pelo menos, o ponteiro para o array e o ponteiro para a estrutura seguinte da lista (lista ligada)

algo que se enquadre nos seguintes moldes:

struct Elem
{
 void * dados_dinamicos;
 struct Elem * proximo_lista;
}

após a criação/alocação (correcta) dos elementos da lista, o código para libertar toda a memória alocada será:

struct Elem * lista, * del;

// ...

while (lista != NULL)
{
 // remoção do elemento à cabeça da lista com salvaguarda do elemento retirado
 del = lista;
 lista = lista->proximo_lista;

 // libertação dos dados dinâmicos do elemento retirado
 free(del->dados_dinamicos);

 // libertação do elemento da lista retirado
 free(del);
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.