• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

bertolo

Realloc

4 mensagens neste tópico

Boas!

Fiz um programa em q alocava 1 byte para alocar uma string de chars e metia lá uma string, naturalmente que no segundo vector alocado da mesma maneira, como tinha reservado pc memoria aquilo reescrevia por cima do primeiro vector.

Pensei então em usar realloc alocar mais memoria depois de saber o tamanho do vector, gostava de saber a vossa opinião sobre estas linhas de codigo, fazem sentido? Estão a fazre o que eu quero?

Reparei tb que se tivesse alocado 1 byte e tentasse escrever 1000 dava seg fault no realloc. porquê?

....

char *a;

a=(char *)calloc(1,sizeof(char));

scanf("%s",a);

a=(char *)realloc(strlen(a));

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya tb tava a pensar nisso.....usei isso e reparei q e perigoso de usar mudou.m uma string numa parte do programa, acrescentou dois caracteres marados. mas na segunda utilização correu tudo bem. talvez na primeira desse mal pq tava a ler de um ficheio nao sei lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para segurança deves colocar o número máximo de caracteres a ler, que tem de caber no buffer de memória alocada.

tipo:

char* a=(char*)calloc(10,sizeof(char));

...

scanf("%10s",a);

...

free(a);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora