|
Usuários |
|
76 Usuários Online
|
|
[Artigos]
Dicas Certificação Delphi Developer – Parte II |
Publicado por rboaro : Terça, Dezembro 18, 2012 - 07:55 GMT-3 (429 leituras)
comentar Enviar para um amigo Versão para impressão
|
Saudações, caros Delphianos!
Continuando nossa série de dicas para a certificação, vamos falar nesta segunda parte sobre Stack e Heap, que está presente no subtópico chamado Areas of Memory – Stack and Heap contido no tópico Memory Management.
Retirei toda esta explicação de um artigo muito interessante do Zarko Gajic presente no delphi.about.com, o qual referencio no final deste artigo.
Há três áreas de memória onde as aplicações armazenam dados: global memory, heap e stack.
Variáveis globais são armazenadas na memória global (global memory). Esta memória é reservada pela aplicação quando o programa inicia e permanece alocada até que o programa termine sua execução.
A memória global (global memory) é também chamada de data segment.
Stack
Quando declaramos uma variável dentro de um método, a memória requerida para armazenar tal variável é alocada numa área denominada Stack. Quando o programa sai do escopo do método, as alocações da Stack são liberadas automaticamente.
A memória Stack é alocada dinamicamente utilizando o conceito de pilha (LIFO – Last In First Out).
Em Delphi, a memória Stack é utilizada para:
- Variáveis de rotinas locais (métodos, procedimentos e funções)
- Parâmetros de rotinas e tipos de retorno
- Chamadas a funções da API do Windows
- Records
Não é necessário alocar nem liberar a memória Stack, pois este processo é feito automaticamente.
O tamanho da memória Stack é, por padrão, grande o suficiente para os programas em Delphi, sendo assim, muito raramente este tamanho terá que ser alterado. Para configurar o tamanho da Stack, clique no menu Project – Options – Linking e note os campos Maximum Stack Size e Minimum Stack Size.
Variáveis locais não são inicializadas quando declaradas, portanto, uma boa prática é, antes de utilizar sua variável, inicializá-la para que você não tenha que se deparar com um valor absurdo.
Devido à estrutura de pilha utilizada pela Stack, o acesso a esta memória é muito rápido, pois apenas algumas poucas operações são realizadas para armazenar e ler o valor de uma variável.
Heap
A memória heap é utilizada para:
- Criar uma instância de uma classe
- Criar e redimensionar arrays dinâmicos
- Alocar memória explicitamente, usando GetMem, FreeMem, New e Dispose
- Utilizar Ansi/Wide/Unicode strings, variants e interfaces (gerenciados automaticamente pelo Delphi)
Os blocos de memória alocados na memória Heap não tem uma ordem lógica de acesso, ou seja, seu acesso é randômico. Por isso que operações realizadas na memória Heap são um pouco mais lentas se comparadas às da Stack.
Referência
http://delphi.about.com/od/windowsshellapi/a/heap-stack-explained-for-delphi-developers.htm
Espero que seja útil!
Grande Abraço!
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|