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

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

Alocação Dinâmica de Memória

Apresentações semelhantes


Apresentação em tema: "Alocação Dinâmica de Memória"— Transcrição da apresentação:

1 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 malloc(<número de bytes>);
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(<número de bytes>); Exemplo: malloc (1);

3 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 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 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 O comando free A função free libera a porção de memória alocada por malloc. Sintaxe: free(<ponteiro>); Assim, se quisermos desalocar o espaço de memória realizado no exemplo anterior, faríamos: free(ptr);

7 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 Exercício em Aula 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.


Carregar ppt "Alocação Dinâmica de Memória"

Apresentações semelhantes


Anúncios Google