Pular para o conteúdo

Usando o realloc

Dica publicada em C/C++ / Avançado
Perfil removido removido
Hits: 22.090 Categoria: C/C++ Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Criando uma árvore de diretórios com o mkdir

Usando o friend em C++

Origens de spam - Investigando e colhendo informações

Resolver problema "Got error 127 from table handler" no MySQL

Fazendo o Scanner GOTEC funcionar no Kurumin

Compilando em um Cluster Linux

Passar variáveis char para inteiro

Compilando Allegro no Linux

Conversão de tipos de dados em C/C++

Harbour e xHarbour para programadores Clipper

#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

Entre na sua conta para comentar.