Ponteiros-ed
1.1 Organização da Memória
Memória
|HEAP |Variáveis Dinâmicas |
|Área de armazenamento |Variáveis Locais |
|Segmento de Dados |Variáveis Globais |
|Segmento de código |Instruções do Programa |
Nota: a disposição exata de seu programa pode variar de compilador para compilador e de ambiente para ambiente. A ilustração acima mostra conceitualmente como seu programa aparece na memória.
• Todas as variáveis GLOBAIS declaradas até agora (var. simples, vetores, registros, etc.) são ESTÁTICAS, isto é, a memória é alocada pra elas do começo ao fim do programa. As variáveis LOCAIS, também ESTÁTICAS, têm seu espaço alocado quando da chamada à função ou ao procedimento e são liberadas no final deles – tamanho pré-fixado.
• A diferença das variáveis DINÂMICAS é que você pode alocar e dispor de espaço durante a execução do programa.
Heap: é a região de memória livre que seu programa pode usar, via funções de alocação dinâmica, em aplicações onde não conhecemos previamente a quantidade de memória que será utilizada em vetores, matrizes, listas encadeadas ou árvores. Embora o tamanho do heap seja desconhecido, ele geralmente contém uma quantidade razoavelmente grande de memória livre.
1.2 Tipos de Alocação de Memória
1.2.1 - Alocação Estática de Memória
Todas as variáveis são definidas no início do algoritmo (ou programa) são denominadas de variáveis estáticas e existem (é reservado espaço para elas) apenas durante a execução do bloco ao qual pertencem.
Exemplo:
Var x: Byte; (* 1 byte alocado na memória *) y: Integer; (* 2 bytes alocados na memória *)
Existem alguns problemas que não conseguem ser resolvidos com o uso das variáveis comuns (integer, real, boolean, string, etc). Entre eles: - A inexistência de espaço contíguo