Alocação dinâmica

A alocação dinâmica é o processo que aloca memória em tempo de execução. Ela é utilizada quando não se sabe ao certo quanto de memória será necessário para o armazenamento das informações, podendo ser determinadas em tempo de execução conforme a necessidade do programa. Dessa forma evita-se o desperdício de memória.

[ Hits: 30.942 ]

Por: Daniel Gurgel Pinheiro em 02/11/2006


E os arrays? Como é que são guardados?



Se declararmos um array de 10 inteiros, o compilador vai reservar um bloco de memória consecutivo que permita guardar esses 10 inteiros. Se um inteiro ocupar 4 bytes, o compilador terá de reservar um bloco de 40 bytes (por exemplo, do endereço E100 até ao endereço E139).
      a[0]  vai ocupar as posições E100, E101, E102, E103
      a[1]  vai ocupar as posições E104, E105, E106, E107
      a[2]  vai ocupar as posições E108, E109, E110, E111
      ...
      ...
      a[9]  vai ocupar as posições E136, E137, E138, E139
Do mesmo modo que dizemos que o endereço da variável x é E2, podemos dizer que o endereço do array a é E100. Isto é, o endereço do array é o endereço do primeiro byte que o array ocupa. De fato, quando declararmos:

int a[10];

O nome a é o endereço da primeira posição do array. Por outras palavras,

      a é sinônimo de &a[0]

Como tal, é perfeitamente válido fazer coisas deste estilo,

int a[10];
int *p;

p = a;
*p = 4; /* equivalente a dizer a[0] = 4 */
Página anterior     Próxima página

Páginas do artigo
   1. Visão mais detalhada da memória do computador
   2. E os arrays? Como é que são guardados?
   3. Alocação dinâmica de memória
   4. Veja programa como exemplo
Outros artigos deste autor

Acessando a porta paralela via Linux

Leitura recomendada

Parâmetros interessantes do scanf e do printf em C

Cuidado com números em Ponto Flutuante

Acessando a porta paralela via Linux

GNA: um Coprocessador para Aceleração Neural

Criando aplicativos para o iPhone no Linux (sem Xcode e MacOS X)

  
Comentários
[1] Comentário enviado por tuxSoares em 02/11/2006 - 10:31h

Não entendi muita coisa mais tá de parabéns! Continue ajudando nossa comunidade, artigos como o seu são impressindiveis para o desenvolvimento intelectual de quem deseja aprender.

Vlw :)

[2] Comentário enviado por Reideer em 02/11/2006 - 10:47h

?
e como ficam lista e fila nesta historia?
acredito que tenha muitos metodos para alocação dinâmica.

[3] Comentário enviado por AboutDiego em 02/11/2006 - 23:34h

Vale ressaltar que dependendo do seu compilador pode também possuir o arquivo oculo malloc.h, tem o mesmo efeito que stdlib.h na hora da alocação dinâmica só muda em que na parte onde você coloca p=(int*)malloc, você colocará p=(int*)calloc

Obs: Somente para abrir um pouco mais o leque ^^. falouz

[4] Comentário enviado por balani em 03/11/2006 - 20:58h

Interessante, eu só não entendi ainda onde usar.

[5] Comentário enviado por AboutDiego em 04/11/2006 - 00:15h

Como utilizar o alocamento de memória ou como utilizar o documento??

[6] Comentário enviado por glaudiston em 30/07/2007 - 14:21h

Um exemplo prático seria quando vc quer ler um arquivo e não sabe o tamanho dele... pode ser gigantesco ou minúsculo.
Outros exemplos inclusive de controle de arrays multidimensionais seguem:
http://vergil.chemistry.gatech.edu/resources/programming/c-tutorial/dynamic.html
http://www.lysator.liu.se/c/c-faq/c-2.html

[7] Comentário enviado por juniomundo em 06/11/2010 - 16:53h

Ótimo. Muito obrigado. Está sendo de grande valia.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts