Baixe o app para aproveitar ainda mais
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
Compartilhar