Pular para o conteúdo

Usando o realloc

Dica publicada em C/C++ / Avançado
Perfil removido removido
Hits: 22.092 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.

Manjaro - Escolher mirrors brasileiros com o pacman

Instalando Spotify no Ubuntu 20.04 LTS

Novena - Projeto de Computador de Hardware Livre

Vundle - Gerenciador de plugins para o Vim

Flash no FreeBSD

Compilando em um Cluster Linux

Usando o pré-processador - básico

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

Como reiniciar o USB sem tirar o cabo

Porque fgets() ou gets()??

#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.