Jump to content

Calloc


alphasil

Recommended Posts

Oi;

Desta vez é só para perguntar se está bem assim, pelo menos funciona 🙂

Substituir a definição estática do array atletas pela alocação dinâmica, escreva o excerto de código que peça ao user o numero de atletas esperado e reserve dinamicamente espaço.

Pus assim:

int main()
{
   int num;
   int *numeros; //ponteiro para usar com alocacao dinamica
   printf("Quantos atletas quer registar!\n");
   scanf("%d", &num);
   getchar();
   numeros=(int*)calloc(num,sizeof(int)); //Uso o calloc visto que tenho um array.
   if(numeros==NULL)
   {
    printf("Erro na alocacao de memoria");
   }
   else
   {
    printf("Memoria bem alocada...");
   }
   return 0;
}

Alguma anomalia ou sugestão?

gmc11

 

Link to comment
Share on other sites

se não queres ter N de pessoas a mandar flame responses tira o cast do calloc

porque, de resto e como já testaste e viste, o código está correto.

claro que o meu estilo de código é diferente, como a seguinte linha:

if((numeros = calloc(num,sizeof(int)))==NULL)

mas isso é gostos

tens também o uso do scanf para leitura de valores do teclado, que é aceitável para quem está a começar.

no entanto, vais muito em breve notar que tem sério problemas se os valores de entrada não são os esperados, assim como o encadeamento de scanf's sem limpeza do buffer de leitura.

mas como disse, está correto.

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

* faltava-me o free(numeros)

sim faltava, mas como

- estás a aprender

- a memória é libertada no fim da execução

- a quantidade de memória alocada é pequena

- a alocação de memória não é executada dentro de um ciclo

- a aplicação é academica

- estão sempre a reclamar por ser demasiado exigente com pessoas que estão a aprender

deixei isso para mais tarde

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.