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

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

Estrutura de Dados Alocação Dinâmica de Memória Alocar memória dinamicamente significa obter mais espaço de memória durante a execução do programa, alocando.

Apresentações semelhantes


Apresentação em tema: "Estrutura de Dados Alocação Dinâmica de Memória Alocar memória dinamicamente significa obter mais espaço de memória durante a execução do programa, alocando."— Transcrição da apresentação:

1 Estrutura de Dados Alocação Dinâmica de Memória Alocar memória dinamicamente significa obter mais espaço de memória durante a execução do programa, alocando novas variáveis e liberando espaço quando necessário.

2 Estrutura de Dados O comando malloc A função malloc (abreviatura de memory allocation) da biblioteca padrão aloca um bloco de bytes consecutivos na memória do computador e devolve o endereço desse bloco. Sintaxe: malloc( ); Exemplo: malloc (1);

3 Estrutura de Dados O comando malloc A função malloc devolve um ponteiro "genérico" ou seja, do tipo void * para um bloco de bytes consecutivos. Se desejarmos realizar a alocação para um tipo específico, o retorno da função será um ponteiro- para-tipo. Neste caso, utilizaremos a função sizeof aninhada. Por exemplo: desejamos alocar um espaço de memória para um tipo inteiro: int *ptr; ptr = (int *) malloc (sizeof (int));

4 Estrutura de Dados O comando malloc Se a memória do computador já estiver toda ocupada, malloc não consegue alocar mais espaço e devolve NULL. Por isso, antes de prosseguir com os comandos após a alocação, convém verificar se a alocação obteve sucesso: int *ptr; ptr = malloc (sizeof (int)); if (ptr == NULL) printf (malloc devolveu NULL!\n");

5 Estrutura de Dados Alocando Vetores Se vetores utilizam espaços consecutivos da memória, basta indicarmos os número de posições que desejamos em um vetor e multiplicarmos pelo número de bytes de um tipo. Exemplificando, teremos: int *ptr; int x, y; X = 10; ptr = (int *) malloc (x * sizeof (int)); Para vetores bidimensionais (matriz): ptr = (int *) malloc (x * y * sizeof (int));

6 Estrutura de Dados O comando free A função free libera a porção de memória alocada por malloc. Sintaxe: free( ); Assim, se quisermos desalocar o espaço de memória realizado no exemplo anterior, faríamos: free(ptr);

7 Estrutura de Dados Exercício em Aula Em várias cidades do interior de SP está sendo realizado um plebiscito para decidir se um conjunto de casarões deverão ser considerados patrimônios históricos. Para isso, os organizadores necessitam de um programa que contabilize o total de votos SIM em cada uma das cidades participantes. O programa deverá receber o total de votos obtidos em cada seção de cada cidade. Ao final, o programa deverá listar o total de votos em cada cidade.

8 Estrutura de Dados Lembre-se: Você deverá indicar ao início do programa, quantas cidades estão participando do plebiscito; Cada cidade poderá ter um número de seções, assim, no início da contagem da cidade, você deverá pedir o número de seções da cidade; Cada cidade receberá um número e suas respectivas seções também serão numeradas. Assim, você só precisará armazenar números inteiros. Utilize funções para separar as tarefas que o programa necessita fazer. Exercício em Aula


Carregar ppt "Estrutura de Dados Alocação Dinâmica de Memória Alocar memória dinamicamente significa obter mais espaço de memória durante a execução do programa, alocando."

Apresentações semelhantes


Anúncios Google