Usando o realloc

Publicado por Perfil removido em 29/11/2004

[ Hits: 21.436 ]

 


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

GSCAN2PDF: escaneando direto em PDF

Finalizando programas através de um terminal

O tv-time não acha sua placa de TV?

Instalando o sysinfo no Mandriva One e superior

Monitorar a performance do MySQL com Mytop

Leitura recomendada

Medindo o tempo de execução do seu programa com o gprof

C++ vs Java

movfuscator - Compilador de uma única instrução Assembly

Compilando em um Cluster Linux

Livro "Advanced Linux Programming"

  

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