A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Jean Carlo Mendes

Apresentações semelhantes


Apresentação em tema: "Jean Carlo Mendes"— Transcrição da apresentação:

1 Jean Carlo Mendes www.codifique.net aed2@codifique.net

2  Uso da memória:  Variáveis globais (estáticas)  Espaço reservado para uma variável global existe enquanto o programa estiver em execução  Variáveis locais  Espaço existe apenas enquanto a função que declarou a variável está sendo executada  Espaço liberado para outros usos quando a execução da função termina  Variáveis globais ou locais podem ser simples ou vetores  Para o caso de vetores, informa-se o tamanho máximo de elementos que ele pode armazenar (o compilador usa esta informação para reservar o espaço de memória)

3  Uso da memória:  Alocação dinâmica  Espaço de memória é requisitado em tempo de execução  Espaço permanece reservado até que seja explicitamente liberado  Depois de liberado, este espaço estará disponível para outros usos (e não pode ser mais acessado)  Espaço alocado e não liberado explicitamente será liberado automaticamente ao final da execução do programa

4  Uso da memória:  Memória estática  Código do programa  Variáveis globais  Variáveis Estáticas  Memória dinâmica  Variáveis alocadas dinamicamente  Memória livre  Variáveis locais Memória estática Código do programa Variáveis globais e variáveis estáticas Memória dinâmica Variáveis alocadas dinamicamente Memória livre Variáveis locais (Pilha de execução)

5  Uso da memória:  Alocação dinâmica  Usa a memória livre  Se o espaço livre for menor que o requisitado na alocação, gera erro (precisa ser tratado)  Pilha de execução  Utilizada para alocar a memória quando ocorre chamada de função  Sistema reserva o espaço para as variáveis locais da função  Quando a função terminar o espaço é liberado (desempilhado)  Se a pilha tentar crescer mais que o espaço disponível o programa termina com erro Memória estática Código do programa Variáveis globais e variáveis estáticas Memória dinâmica Variáveis alocadas dinamicamente Memória livre Variáveis locais (Pilha de execução)

6  A biblioteca “stdlib.h” fornece uma séria de funções pré-definidas para se trabalhar com alocação dinâmica

7 void * malloc (int numeroBytes); void free (void *p); Código do Programa Variáveis Globais e Estáticas Memória Alocada Dinamicamente Pilha Memória Livre

8 Função “malloc”  Recebe como parâmetro o número de bytes que se deseja alocar  Retorna um ponteiro “genérico” para o endereço inicial da área de memória alocada (se houver espaço livre)  Ponteiro genérico é representado por void*  Ponteiro é convertido automaticamente para o tipo apropriado  Ponteiro pode ser convertido explicitamente  Retorna um endereço nulo se não houver espaço livre  Representado pelo símbolo NULL

9 Função “sizeof”  Retorna o número de bytes ocupado por um tipo Função “free”  Recebe como parâmetro o ponteiro da memória a ser liberada  A função free deve receber um endereço de memória que tenha sido usado para alocação dinâmica (com o malloc)

10 Exemplo  Alocação dinâmica de memória para um vetor capaz de armazenar 10 valores do tipo inteiro  malloc retorna o endereço da memória alocada para armazenar valores inteiros  Ponteiro de inteiro recebe o endereço inicial para o espaço alocado int *v; v = (int *) malloc (10 * sizeof(int));

11 int *v; v = (int *) malloc (10 * sizeof(int));

12  v armazena o endereço inicial de uma área contígua de memória (suficiente para armazenar 10 valores inteiros)  v pode ser tratado como um vetor declarado estaticamente  v aponta para o início da área alocada  v[0] acessa o espaço do primeiro elemento  v[1] acessa o espaço do segundo elemento  v[9] acessa o espaço alocado para o último elemento

13 Tratamento de erro para o malloc  Imprime a mensagem de erro  Aborta a execução (exit)

14 Revistando o exemplo de ponteiros....

15  Erro na atribuição *p=3  Utiliza a memória apontada por p para armazenar o valor 3 sem que a área de memória seja alocada  Armazena 3 em um espaço de memória não conhecido

16  Reservado o espaço de 1 inteiro para p  Atribuição realizada com sucesso

17 Exercício !


Carregar ppt "Jean Carlo Mendes"

Apresentações semelhantes


Anúncios Google