Alocação dinamica

1. Alocação dinamica

Cristiam
Dean_Winchester

(usa Outra)

Enviado em 22/03/2014 - 23:21h

Boa Noite
estou tentando resolver um exercicio da faculdade mas nao estou conseguindo
preciso ler e armazenar num vetor numeros de um arquivo que ira disponibilizado
porem nao sei a quantidade de memoria que devo alocar. logo a solução seria ler e ir alocando
a memoria no vetor.
eu tentei fazer assim mas nao deu certo alguem tem alguma dica


while (feof (Arquivo) ==0)
{
Vetor=(int*)malloc(1*sizeof(int));
fscanf(Arquivo,"%d",Vetor);
}


  


2. Re: Alocação dinamica

???
gokernel

(usa Linux Mint)

Enviado em 23/03/2014 - 07:29h


Veja algo sobre realloc().



3. Re: Alocação dinamica

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/03/2014 - 11:56h

Estou estudando C por conta propria,mas ainda nao estou nesta parte.Mas o cara acima,pelo que ja vi em suas respostas,manja bem.
Achei esse link aqui,talvez ajude:
http://www.linguagemc.xpg.com.br/aloc_dinamica.html


4. Re: Alocação dinamica

???
gokernel

(usa Linux Mint)

Enviado em 23/03/2014 - 19:48h

Um pequeno exemplo usando realloc:

/*

**-------------------------------------------------------------------
**
** Um simples exemplo usando realloc()
**
**-------------------------------------------------------------------
*/

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

int *array = NULL; // nao precisa mas ... inicializei
int len = 0; // nao precisa mas ... fiz tambem ;)

void add (int i)
{
int *temp;

temp = (int*) realloc (array, (len + 1) * sizeof(int));

// verifica se allocou
//
if (temp == NULL)
{
printf ("ERRO - falta de memoria\n");
exit (-1);
}

array = temp;

// define o valor e incrementa ( len )
//
array [len++] = i;
}

int main()
{
int i;

add(100);
add(200);
add(300);
add(400);
add(500);
add(600);
add(700);
add(800);
add(900);
add(1000);

for(i=0;i<len;i++)
printf ("array[ %d ] = %d\n", i, array[i]);

free (array);

printf ("Saindo com sucesso\n");

return 0;
}



Lembrando que realloc nao eh uma função tão simples, internamente ela faz:
01 - Cria um novo bloco de memoria.
02 - Copia bloco de memoria para o novo bloco criado.
03 - Libera o bloco ( nao o novo ).

E dependendo do tamanho do bloco de memoria esse processo poderá ficar lento se for processado constantemente dentro de um loop.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts