Escolar Documentos
Profissional Documentos
Cultura Documentos
Eduardo Nbrega
tRegistro listaDeEspera[MAXIMO_DE_PASSAGEIROS];
Este tipo de alocao denominado alocao dinmica de memria Alocao esttica de memria, cujo espao a ser alocado conhecido em tempo de programao (i.e., antes mesmo de o programa ser executado).
FUNO DESCRIO RESUMIDA malloc() Aloca um nmero especificado de bytes em memria, e retorna um ponteiro para o incio do bloco de memria alocado. calloc() Similar a malloc(), mas esta funo inicializa todos os bytes alocados com zeros. Esta funo tambm permite a alocao de memria para mais de um bloco numa mesma chamada. realloc() Modifica o tamanho de um bloco previamente alocado. free() Libera o espao de um bloco de memria previamente alocado com malloc(), calloc() ou realloc().
Tabela 1: Funes de Alocao Dinmica de Memria *No DevC++ no precisamos incluir estas bibliotecas
O uso do sizeof recomendado, principalmente, por questes de portabilidade. Se a memria no puder se alocada, um ponteiro nulo (NULL) ser retornado.
Alocaria (se fosse possvel) um bloco capaz de conter uma estrutura do tipo tRegistro e retornaria um ponteiro contendo o endereo inicial deste bloco.
Exemplo1 - malloc
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // ponteiro para uma varivel do tipo inteiro int *ponteiro; // aloca memria para um int ponteiro = malloc(sizeof(int)); // testa se a memria foi alocada com sucesso if(ponteiro) printf("Memoria alocada com sucesso.\n"); else printf("Nao foi possivel alocar a memoria.\n"); // atribui valor memria alocada *ponteiro = 45; // obtm o valor atribudo printf("Valor: %d\n\n", *ponteiro); // libera a memria if(ponteiro) free(ponteiro); system("PAUSE"); return 0; }
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; // quantidade de elementos no vetor int quant = 10; // ponteiro para o bloco de memria int *ponteiro; // aloca memria para uma matriz de inteiros ponteiro = (int*)calloc(quant, sizeof(int)); // testa se a memria foi alocada com sucesso if(ponteiro) printf("Memoria alocada com sucesso.\n"); else{ printf("Nao foi possivel alocar a memoria.\n"); exit(1); } // atribui valores aos elementos do array for(i = 0; i < quant; i++){ ponteiro[i] = i * 2; } // exibe os valores for(i = 0; i < quant; i++){ printf("%d ", ponteiro[i]); } // libera a memria if(ponteiro) free(ponteiro); printf("\n\n"); system("PAUSE"); return 0; }