Aula sobre alocação dinâmica em c
Alocação Dinâmica de Memória
Alocação Dinâmica de Memória
Prof. Nilton Correia da Silva
Estrutura de Dados e Algoritmos
Gerenciamento Dinâmico de Memória
• Necessário sempre que a quantidade de memória requerida só é sabida em tempo de execução:
• Carregamento dos dados de um arquivo; • Operações com vetores/matrizes cujas dimensões dependem do contexto do problema; • …
Alocação Dinâmica de Memória
Prof. Nilton Correia da Silva
Estrutura de Dados e Algoritmos
Gerenciamento Dinâmico de Memória
• Mapa de memória de um programa:
Memória Alta Montículo (Heap) Disponível para alocações dinâmicas
Segmento de pilha Segmento de dados Segmento de código n
. Segmento de código 2 Memória Baixa Segmento de código 1
Alocação Dinâmica de Memória
Informações de controle e var. locais Dados (var. globais) Código Compilado
Prof. Nilton Correia da Silva
Estrutura de Dados e Algoritmos
Gerenciamento Dinâmico de Memória
• Vantagens:
• Controle do uso de memória: uso sob demanda;
• Cuidados:
• Gerenciar lixo;
• Implementação em C/C++:
• Via ponteiros; • Funções/Operadores de alocação e desalocação;
Alocação Dinâmica de Memória
Prof. Nilton Correia da Silva
Estrutura de Dados e Algoritmos
Vetores Dinâmicos em Linguagem C
• malloc: void* malloc (size_t qtde); qtde: quantidade de bytes a serem alocados. tipo do dado *nome = (tipo do dado *) malloc(sizeof(tipo do dado) * tamanho);
• calloc: void* calloc (size_t qtde, size_t tam); qtde: quantidade de elementos a serem alocados. tam: tamanho (em bytes) de cada elemento. tipo do dado * nome = (tipo do dado *) calloc (tamanho, sizeof(tipo do dado));
Alocação Dinâmica de Memória
Prof. Nilton Correia da Silva
Estrutura de Dados e Algoritmos
Vetores Dinâmicos em Linguagem C
• free: void free(void* ptr); ptr: ponteiro para a área de memória a ser desalocada.
• #include
• malloc, calloc • free
Alocação