Usando o realloc

Publicado por Perfil removido em 29/11/2004

[ Hits: 21.808 ]

 


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

Webcam no Ubuntu 7.10 utilizando driver binário spca5xx

Instalando aMSN 0.97b pelo YUM

Configurando conexão wireless no Mandriva One e superior (iniciantes)

Fedora 18 - Firewall para desktop + script de inicialização

Configuração do Squid via modo gráfico

Leitura recomendada

Exemplo prático do uso de C+Assembly

Interface gráfica com C

Compilando em um Cluster Linux

Usando o pré-processador - básico

Porque fgets() ao invés de 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