Buscar

Alocação Dinâmica - C

Prévia do material em texto

Alocac¸a˜o de Memo´ria
Computac¸a˜o Ba´sica
Prof. Marcos F. Caetano
caetano@cic.unb.br
Departamento de Cieˆncia da Computac¸a˜o
Universidade de Bras´ılia
CIC 1/1
Alocac¸a˜o de Memo´ria
A memo´ria do computador precisa ser gerenciada para que os algoritmos
sejam executados corretamente.
Alocac¸a˜o Esta´tica
Processo de alocar a memo´ria necessa´ria antes da execuc¸a˜o do programa.
Alocac¸a˜o Dinaˆmica
Processo de alocar a memo´ria necessa´ria durante da execuc¸a˜o do programa.
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 2/14
Alocac¸a˜o de Memo´ria
A memo´ria do computador precisa ser gerenciada para que os algoritmos
sejam executados corretamente.
Alocac¸a˜o Esta´tica
Processo de alocar a memo´ria necessa´ria antes da execuc¸a˜o do programa.
Alocac¸a˜o Dinaˆmica
Processo de alocar a memo´ria necessa´ria durante da execuc¸a˜o do programa.
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 2/14
Alocac¸a˜o de Memo´ria
A memo´ria do computador precisa ser gerenciada para que os algoritmos
sejam executados corretamente.
Alocac¸a˜o Esta´tica
Processo de alocar a memo´ria necessa´ria antes da execuc¸a˜o do programa.
Alocac¸a˜o Dinaˆmica
Processo de alocar a memo´ria necessa´ria durante da execuc¸a˜o do programa.
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 2/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
Leia
nome
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
“Ola´ ”, nome, ‘!’
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
“n! = ”, n
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
Fatorial
n=3
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
Fatorial
n=3
Fatorial
n=2
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
Fatorial
n=3
Fatorial
n=2
Fatorial
n=1
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
Fatorial
n=3
Fatorial
n=2
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
Fatorial
n=3
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
Escreva
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
F
nome, n
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
AlgoritmoExemplo
quem
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
1 Algoritmo AlgoritmoExemplo
2 Func¸a˜o Void F(string nome, inteiro n)
3 Inı´cio
4 Escreva("Ola´ ", nome, "!")
5 Escreva("n! = ", n)
6 Escreva(Fatorial(n))
7 Fim
8
9 Varia´veis
10 quem : string
11 Inı´cio
12 Leia(quem)
13 F(quem, 3)
14 Fim
Pilha de
Execuc¸a˜o
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 3/14
Alocac¸a˜o Esta´tica
Vantagens
- Armazena o enderec¸o de retorno.
- Armazena os dados localmente.
- Passagem de paraˆmetros.
- Ana´lise de processos.
- Encapsulamento de escopo.
Tamanho da pilha (por thread): depende de diversos fatores!
$ ulimit -a
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 4/14
Alocac¸a˜o Esta´tica
Vantagens
- Armazena o enderec¸o de retorno.
- Armazena os dados localmente.
- Passagem de paraˆmetros.
- Ana´lise de processos.
- Encapsulamento de escopo.
Tamanho da pilha (por thread):
depende de diversos fatores!
$ ulimit -a
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 4/14
Alocac¸a˜o Esta´tica
Vantagens
- Armazena o enderec¸o de retorno.
- Armazena os dados localmente.
- Passagem de paraˆmetros.
- Ana´lise de processos.
- Encapsulamento de escopo.
Tamanho da pilha (por thread): depende de diversos fatores!
$ ulimit -a
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 4/14
Alocac¸a˜o Esta´tica
Vantagens
- Armazena o enderec¸o de retorno.
- Armazena os dados localmente.
- Passagem de paraˆmetros.
- Ana´lise de processos.
- Encapsulamento de escopo.
Tamanho da pilha (por thread): depende de diversos fatores!
$ ulimit -a
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 4/14
Alocac¸a˜o Dinaˆmica
A memo´ria e´ alocada apenas quando for necessa´rio, evitando “desperd´ıcio”.
1 Algoritmo Alocac¸a˜oDinaˆmica
2 Varia´veis
3 ptr : ponteiro
4 n : inteiro
5 Inı´cio
6 Leia(n)
7 ptr = Reserve(n*Tamanho(real))
8 /* ... */
9 Libere(ptr)
10 Fim
Heap
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 5/14
Alocac¸a˜o Dinaˆmica
AlocacaoDinamica.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(void){
5 int i, n;
6 float *vetor;
7
8 printf("\nDigite o nu´mero de elementos: ");
9 scanf("%d", &n);
10
11 vetor = (float *)malloc(n*sizeof(float));
12
13 for(i=0; i < n; i++) scanf("%f", vetor+i);
14 printf("\nVetor: [ ");
15 for(i=0; i < n; i++) printf("%f ", vetor[i]);
16 printf("]\n");
17
18 free(vetor);
19
20 return(0);
21 }
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 6/14
Alocac¸a˜o Dinaˆmica
malloc aloca memo´ria.
calloc aloca e inicializa memo´ria.
realloc realoca memo´ria.
free libera memo´ria.
11 vetor = (float *)malloc(n*sizeof(float));
12
13 if(vetor == NULL) {
14 printf("\nNa˜o foi possı´vel alocar memo´ria;");
15 return EXIT_FAILURE;
16 }
21 /* ... */
22 free(vetor); /* O programador e´ responsa´vel. */
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 7/14
Alocac¸a˜o Dinaˆmica
malloc aloca memo´ria.
calloc aloca e inicializa memo´ria.
realloc realoca memo´ria.
free libera memo´ria.
11 vetor = (float *)malloc(n*sizeof(float));
12
13 if(vetor == NULL) {
14 printf("\nNa˜o foi possı´vel alocar memo´ria;");
15 return EXIT_FAILURE;
16 }
21 /* ... */
22 free(vetor); /* O programador e´ responsa´vel. */
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 7/14
Alocac¸a˜o Dinaˆmica
malloc aloca memo´ria.
calloc aloca e inicializa memo´ria.
realloc realoca memo´ria.
free libera memo´ria.
11 vetor = (float *)malloc(n*sizeof(float));
12
13 if(vetor == NULL) {
14 printf("\nNa˜o foi possı´vel alocar memo´ria;");
15 return EXIT_FAILURE;
16 }
21 /* ... */
22 free(vetor); /* O programador e´ responsa´vel. */
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 7/14
Alocac¸a˜o Dinaˆmica
malloc aloca memo´ria.
calloc aloca e inicializa memo´ria.
realloc realoca memo´ria.
free libera memo´ria.
11 vetor = (float *)malloc(n*sizeof(float));
12
13 if(vetor == NULL) {
14 printf("\nNa˜o foi possı´vel alocar memo´ria;");
15 return EXIT_FAILURE;
16 }
21 /* ... */
22 free(vetor); /* O programador e´ responsa´vel. */
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 7/14
Alocac¸a˜o Dinaˆmica
1 int *vetor = (int *)calloc(10, sizeof(int));
2 for(i = 0; i < 10; i++)
3 vetor[i] = i;
4
5 char **matriz = (char **)calloc(10, sizeof(char *));
6 for(i = 0; i < 10; i++) {
7 matriz[i] = (char *)malloc(i*100*sizeof(char));
8 printf("\nDigite ate´ %d caracteres.", 100*i);
9 gets(matriz[i]);
10 }
11 /* ... */
12 free(vetor);
13 for(i = 0; i < 10; i++)
14 free(matriz[i]);
15 free(matriz);
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 8/14
Alocac¸a˜o Dinaˆmica
1 int *vetor = (int *)calloc(10, sizeof(int));
2 for(i = 0; i < 10; i++)
3 vetor[i] = i;
4
5 char **matriz = (char **)calloc(10, sizeof(char *));
6 for(i = 0; i < 10; i++) {
7 matriz[i] = (char *)malloc(i*100*sizeof(char));
8 printf("\nDigite ate´ %d caracteres.", 100*i);
9 gets(matriz[i]);
10 }
11 /* ... */
12 free(vetor);
13 for(i = 0; i < 10; i++)
14 free(matriz[i]);
15 free(matriz);
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 8/14
Alocac¸a˜o Dinaˆmica
1 int *vetor = (int *)calloc(10, sizeof(int));
2 for(i = 0; i < 10; i++)
3 vetor[i] = i;
4
5 char **matriz = (char **)calloc(10, sizeof(char *));
6 for(i = 0; i < 10; i++) {
7 matriz[i] = (char *)malloc(i*100*sizeof(char));
8 printf("\nDigite ate´ %d caracteres.", 100*i);
9 gets(matriz[i]);
10 }
11 /* ... */
12 free(vetor);
13 for(i = 0; i < 10; i++)
14 free(matriz[i]);
15 free(matriz);
CIC Alocac¸a˜o de Memo´ria - Alocac¸a˜o de Memo´ria 8/14
Gerenciamento de Memo´ria
O uso indiscriminado da memo´ria pode causar dois tipos de problemas...
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 9/14
Vazamento de Memo´ria
1 int fat(int n) {
2 return n*fat(n-1);
3 }
1 ptr = (int *)malloc(N*sizeof(int));
2
3 if (N < 10) return -1;
4 /* ... */
5 free(ptr);
1 ptr1 = (int *)malloc(10*sizeof(int));
2 scanf("%s", ptr1);
3 ptr2 = (int *)malloc(10*sizeof(int));
4 scanf("%s", ptr2);
5 ptr1 = ptr2;
6
7 free(ptr1);
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 10/14
Vazamento de Memo´ria
1 int fat(int n) {
2 return n*fat(n-1);
3 }
1 ptr = (int *)malloc(N*sizeof(int));
2
3 if (N < 10) return -1;
4 /* ... */
5 free(ptr);
1 ptr1 = (int *)malloc(10*sizeof(int));
2 scanf("%s", ptr1);
3 ptr2 = (int *)malloc(10*sizeof(int));
4 scanf("%s", ptr2);
5 ptr1 = ptr2;
6
7 free(ptr1);
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 10/14
Vazamento de Memo´ria
1 int fat(int n) {
2 return n*fat(n-1);
3 }
1 ptr = (int *)malloc(N*sizeof(int));
2
3 if (N < 10) return -1;
4 /* ... */
5 free(ptr);
1 ptr1 = (int *)malloc(10*sizeof(int));
2 scanf("%s", ptr1);
3 ptr2 = (int *)malloc(10*sizeof(int));4 scanf("%s", ptr2);
5 ptr1 = ptr2;
6
7 free(ptr1);
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 10/14
Vazamento de Memo´ria
1 char *me_da_memoria(int n) {
2 return (char *)calloc(n, sizeof(char));
3 }
4
5 int main() {
6 /* ... */
7 scanf("%d", &n);
8 me_da_memoria(n);
9
10 return 0;
11 }
1 char **matriz = (char **)calloc(10, sizeof(char *));
2 /* ... */
3 free(matriz);
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 11/14
Vazamento de Memo´ria
1 char *me_da_memoria(int n) {
2 return (char *)calloc(n, sizeof(char));
3 }
4
5 int main() {
6 /* ... */
7 scanf("%d", &n);
8 me_da_memoria(n);
9
10 return 0;
11 }
1 char **matriz = (char **)calloc(10, sizeof(char *));
2 /* ... */
3 free(matriz);
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 11/14
Fragmentac¸a˜o de Memo´ria
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 12/14
Fragmentac¸a˜o de Memo´ria
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 12/14
Fragmentac¸a˜o de Memo´ria
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 12/14
Fragmentac¸a˜o de Memo´ria
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 12/14
Fragmentac¸a˜o de Memo´ria
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 12/14
Fragmentac¸a˜o de Memo´ria
Stack
- Armazenada na RAM.
- Escopo de varia´veis definido
automaticamente.
- Alocac¸a˜o mais eficiente (ra´pida).
- Implementac¸a˜o com pilha.
- Vazamento de memo´ria.
- Ponteiros na˜o sa˜o “obrigato´rios”.
- Espac¸o a ser utilizado e´
conhecido.
- Tamanho ma´ximo e´ pre´-definido.
Heap
- Armazenada na RAM.
- Escopo definido
manualmente.
- Alocac¸a˜o menos eficiente
(ra´pida).
- Vazamento de memo´ria.
- Falta de memo´ria.
- Ponteiros sa˜o “obrigato´rios”.
- Espac¸o na˜o e´ conhecido.
- Tamanho ma´ximo na˜o e´
pre´-definido.
CIC Alocac¸a˜o de Memo´ria - Gerenciamento de Memo´ria 13/14
Resumo
Alocac¸a˜o de Memo´ria
Alocac¸a˜o Esta´tica
Alocac¸a˜o Dinaˆmica
Gerenciamento de Memo´ria
Vazamento de Memo´ria
Fragmentac¸a˜o de Memo´ria
CIC Alocac¸a˜o de Memo´ria - Resumo 14/14
	Alocação de Memória
	Alocação Estática
	Alocação Dinâmica
	Gerenciamento de Memória
	Vazamento de Memória
	Fragmentação de Memória

Continue navegando