Ir ao conteúdo

Posts recomendados

Postado

Após fazer uma alocação dinâmica, caso eu não utilize a função free  para desalocar esse espaço, ao fechar o programa essa alocação some ou permanece em minha memória pra sempre ?

 

Outra dúvida, sempre que uso a função free o compilador aponta como erro(CodeBlock).

Postado
1 hora atrás, Flávio Pedroza disse:

A alocação permanece na memória até a próxima re-inicialização do sistema.

Chamar free em uma variável que não foi previamente alocada na memória com malloc, calloc, etc. dará erro.

O erro aparece mesmo usando a função malloc.

Postado
5 horas atrás, Alberto_Santos disse:

 

Outra dúvida, sempre que uso a função free o compilador aponta como erro(CodeBlock).

 

Você incluiu a biblioteca stdlib.h?

malloc, calloc, free, etc pertencem a biblioteca stdlib.h logo deve incluí-la.

  • Curtir 1
Postado
Em 16/04/2019 às 14:13, Flávio Pedroza disse:

Mostra um exemplo de código que dá erro.

#include <stdio.h>
#include <stdlib.h>

typedef struct Lista{
int valor;
struct Lista *proximo;
}No;

void insere(No **);
void excluiValor(No **);
void exibeLista(No *);

int main()
{
No *inicio = NULL;
 insere(&inicio);
 exibeLista(inicio);
 excluiValor(&inicio);
 puts("Apos a exclusão do valor");
 exibeLista(inicio);
return 0;
}

//colocando valores dentro da lista
void insere(No **inicio)
{
No *novo;
for(int i = 1; i < 6; i++){
 if((novo = (No*) malloc(sizeof(No))) != NULL){
 novo->proximo = *inicio;
 *inicio = novo;
 printf("Valor: ");	scanf("%d", &novo->valor);
 }
}
}

//Função para excluir um determinado valor da lista
void excluiValor(No **inicio)
{
No *aux = *inicio, *exclui, *teste;
int valor = 0;
 printf("Valor para exclusão: ");	scanf("%d", &valor);
 for(No *aux = *inicio; aux->proximo != NULL; aux = aux->proximo){
  if(valor == aux->valor){
   exclui = aux;
   break;
  }
 }
 teste = exclui->proximo-1;
 teste->proximo = exclui->proximo;
 free(exclui);
}

//Exibindo a lista
void exibeLista(No *inicio)
{
 for(No *aux = inicio; aux->proximo != NULL; aux = aux->proximo){
 printf("%d\n", aux->valor);
 }
}

Esse é um exemplo.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!