Usando o realloc

Publicado por Perfil removido em 29/11/2004

[ Hits: 21.952 ]

 


Usando o realloc



Quando fui monitor da disciplina que estuda C na faculdade, uma das coisas em que os usuários mais erravam era no uso do realloc.

Isso acontece por que na maioria das vezes o programador esquece de "pegar" o retorno da função. O realloc tenta realocar a quantidade de memória pedida na seqüência da já alocada, se não consegue, ele aloca uma nova área e retorna o ponteiro pra essa área, liberando a área previamente alocada, e é aí que ocorre o erro.

char *pointer = (char *) malloc(10 * sizeof(char));
realloc(pointer, 20); /* errado */
pointer = realloc(pointer, 20); /* certo */

Fazendo isso as chances de ter erro no uso do realloc são quase zero.

Outras dicas deste autor

Confira o OpenBSD 5.0!

Flatpak no openSUSE Leap 15 e Tumbleweed

Iniciando sistema no modo gráfico ou modo texto (configurando "runlevel" padrão no Systemd)

Wine - PreloaderPageZero Problem

Criando uma ISO personalizada do Linux Mint 18

Leitura recomendada

Passar variáveis char para inteiro

Livro de programação de jogos Linux de graça

Porque fgets() ao invés de gets()

Compilando em um Cluster Linux

Porque fgets() ou gets()??

  

Comentários
[1] Comentário enviado por vodooo em 29/11/2004 - 07:41h

Dica legal!!!

Abraços

[2] Comentário enviado por jllucca em 11/04/2005 - 18:38h

Dica legal... Eu quando testei aqui não reparei isso!

[3] Comentário enviado por FelipeAbella em 25/11/2005 - 14:55h

Outra coisa é verificar se o ponteiro recebido é nulo, pois se não tiver memória para realocar a funcao devolve nulo, e se não me engano ela devolve nulo e não libera a memoria que pediu pra realocar... ai voce tem que ter um "backup" do ponteiro pra em caso de erro liberar a memoria, isso que se quiser um programa livre de erros, e que não deixe sujeira na memoria

[4] Comentário enviado por dgpinheiro em 26/10/2006 - 20:03h

Concordo com o Felipe, é um erro grave a não verificação do ponteiro nulo, algumas vezes pode detonar com o sistema operacinal.

Valeu!!!
dgpinheiro



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts