Ir ao conteúdo
  • Cadastre-se

Verificação do espaço com malloc


sidyo

Posts recomendados

Olá, tenho um problema utilizando a função malloc para guardar strings. Desejo guardar strings em uma memória alocada e caso não tenha espaço realocar. Por exemplo, uso malloc para 20 caracteres, salvo uma string com 10 caracteres mais o null e após isso desejo salvar outra string com 10 caracteres, como faria a verificação para saber se tem espaço na memória ou seria necessário realocar?

Link para o comentário
Compartilhar em outros sites

pois si você alloca tal como

int TAM = 20;
char *vetor = (char*)malloc(TAM);

 

simplesmente pegue e some tudo o que tiver até o nulo mais o tamanho da nova frase e compare com TAM-1(o -1 é por causa do null que tem que estar sim ou sim), si o superar então você precisa usar um realloc.

Link para o comentário
Compartilhar em outros sites

Se você ta pensando em utilizar sizeof para saber o tamanho esqueça, saiba que tentar utilizar sizeof com uma memória reservada com malloc o único que você obterá é o tamanho do ponteiro... sinceramente não sei se é possivel fazer isso, olha que já pesquisei isso muito tempo mas sem resultado. A mesma coisa sucede quando você passa um vetor/matriz por referencia a outra função, se tentar usar sizeof não vai conseguir, ou seja, você vai obter o tamanho do ponteiro somente.

Link para o comentário
Compartilhar em outros sites

valido é! O problema é que você não poderá utilizar sizeof para obter o tamanho do vetor como fazemos com um vetor declarado na pilha, ou ao menos eu não sei fazer isso sem usar uma variável.
Também está a solução do realoc,... e também a solução comentada pelo ciroboy

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...