TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Resumo Trabalho C

Artigos Científicos: Resumo Trabalho C. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  20/9/2014  •  941 Palavras (4 Páginas)  •  385 Visualizações

Página 1 de 4

Alocação Dinâmica de Memória

Até o momento, na declaração de um vetor para representar Listas, Filas e Pilhas, foi

preciso dimensioná-lo, o que nos obrigava, a saber, de antemão, quanto espaço seria

necessário, isto é, tínhamos de prover o número máximo de elementos no vetor durante

a codificação. Esse pré-dimensionamento é um fator limitante. Por exemplo, se

desenvolvermos um programa para calcular a média e a variância das notas de uma

prova, teremos de prever o número máximo de alunos. Uma solução é dimensionar o

vetor com um número absurdamente alto, para não termos limitações no momento da

utilização do programa. No entanto, isso levaria a um desperdício de memória, o que é

inaceitável em diversas aplicações. Se, por outro lado, formos modestos no pré-

dimensionamento do vetor, o uso do programa fica muito limitado, pois não

conseguiríamos tratar turmas com um número de alunos maior que o previsto.

Felizmente, a linguagem C oferece meios de requisitar espaços de memória em tempo

de execução. Dizemos que podemos alocar memória dinamicamente. Com esse recurso,

nosso programa para o cálculo da média e variância discutido antes pode, em tempo de

execução, consultar o número de alunos da turma e então fazer a alocação do vetor

dinamicamente, sem desperdício de memória.

Uso da memória

Informalmente, podemos dizer que existem três maneiras de reservar espaço de

memória para o armazenamento de informações:

A primeira é usar variáveis globais (e estáticas). O espaço reservado para uma variável

global existe quanto o programa estiver sendo executado.

A segunda maneira é usar variáveis locais. Nesse caso, o espaço existe apenas enquanto

a função que declarou a variável está sendo executada, sendo liberado para outros usos

quando a execução da função termina. Por esse motivo, a função que chama não pode

fazer referência ao espaço local da função chamada. As variáveis globais ou locais

podem ser simples ou vetores. Para os vetores, precisamos informar o número máximo

de elementos; caso contrário, o compilador não saberia o tamanho do espaço a ser

reservado.

A terceira maneira de reservar memória é requisitar ao sistema, em tempo de execução,

um espaço de um terminado tamanho. Esse espaço alocado dinamicamente permanece

Anhanguera Educacional

Estrutura de Dados - Prof. Ms. Thiago Salhab Alves

reservado até que seja explicitamente liberado pelo programa. Por isso, podemos alocar

dinamicamente um espaço de memória em uma função e acessá-lo em outra. A partir do

momento em que liberarmos o espaço, ele estará disponibilizado para outros usos e não

podemos mais acessá-lo. Se o programa não liberar um espaço alocado, ele será

automaticamente liberado quando a execução do programa terminar.

Na figura 1 abaixo, apresentamos um esquema didático que ilustra de maneira fictícia a

distribuição do uso da memória pelo sistema operacional. Quando requisitamos ao

sistema operacional para executar um determinado programa, o código em linguagem

de máquina do programa deve ser carregado na memória. O sistema operacional reserva

também os espaços necessários para armazenar as variáveis globais (e estáticas)

existentes no programa. O restante da memória livre é utilizado pelas variáveis locais e

pelas variáveis alocadas dinamicamente. Cada vez que uma determinada função é

chamada, o sistema reserva o espaço necessário para as variáveis locais da função. Esse

espaço pertence à pilha de execução e, quando a função termina, é desempilhado. A

parte da memória não ocupada pela pilha de execução pode ser requisitada

dinamicamente. Se a pilha tentar crescer além do espaço disponível existente, dizemos

que ela “estourou”, e o programa é abortado com erro. Da mesma forma, se o espaço de

memória livre for menor do que o espaço requisitado dinamicamente, a alocação não é

feita, e o programa pode prever um tratamento de erro adequado (por

...

Baixar como (para membros premium)  txt (6.6 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com