#include <stdio.h>
#include <stdlib.h>

char vet[150], *str;

void insere_vet(int quant)
{
int i;
printf("n(insere_vet) quant=%d",quant);
fflush(stdin);
for(i=0;i<quant;i++)
{
 printf("nvet[%d]: ",i);
 scanf("%c",&vet[i]);
 fflush(stdin);
}
printf("nTamanho de vet: %d bytesn",sizeof(vet));
}

void insere_str(int quant)
{
int i,cont=0;
printf("n(insere_str) quant=%d",quant);
fflush(stdin);
if((str=(char*) malloc(quant)) != NULL)
{
 for(i=0;i<quant;i++)
 {
  printf("nstr[%d]: ",i);
  scanf("%c",&str[i]);
  printf("str[%d]= %cn",i,str[i]);
  fflush(stdin);
  cont = cont + sizeof(str[i]);
 }
printf("nTamanho de str: %d bytesn",cont+sizeof(str));
}
else
printf("nNao alocou memoria");
}

int main(void)
{
  int qtd;
  printf("Digite a qtd de elementos do vetor: ");
  scanf("%d",&qtd);
  printf("nqtd= %d",qtd);
  printf("nTamanho de vet: %d bytes",sizeof(vet));
  printf("nTamanho de str: %d bytesn",sizeof(str));
fflush(stdin);
 insere_vet(qtd);
 insere_str(qtd);

 printf("nstr antes de ser liberado str[0]= %c str[1]= %cn",str[0],str[1]);
 free(str);
 printf("nVerificando se str foi liberado str[0]= %c str[1]= %cn",str[0],str[1]);

 system("PAUSE");
 return 0;
}

Alocação Dinâmica em C

  • 1.
    #include <stdio.h> #include <stdlib.h> charvet[150], *str; void insere_vet(int quant) { int i; printf("n(insere_vet) quant=%d",quant); fflush(stdin); for(i=0;i<quant;i++) { printf("nvet[%d]: ",i); scanf("%c",&vet[i]); fflush(stdin); } printf("nTamanho de vet: %d bytesn",sizeof(vet)); } void insere_str(int quant) { int i,cont=0; printf("n(insere_str) quant=%d",quant); fflush(stdin); if((str=(char*) malloc(quant)) != NULL) { for(i=0;i<quant;i++) { printf("nstr[%d]: ",i); scanf("%c",&str[i]); printf("str[%d]= %cn",i,str[i]); fflush(stdin); cont = cont + sizeof(str[i]); } printf("nTamanho de str: %d bytesn",cont+sizeof(str)); } else printf("nNao alocou memoria"); } int main(void) { int qtd; printf("Digite a qtd de elementos do vetor: "); scanf("%d",&qtd); printf("nqtd= %d",qtd); printf("nTamanho de vet: %d bytes",sizeof(vet)); printf("nTamanho de str: %d bytesn",sizeof(str));
  • 2.
    fflush(stdin); insere_vet(qtd); insere_str(qtd); printf("nstr antes de ser liberado str[0]= %c str[1]= %cn",str[0],str[1]); free(str); printf("nVerificando se str foi liberado str[0]= %c str[1]= %cn",str[0],str[1]); system("PAUSE"); return 0; }