Em muitos casos , o utilizador determina em tempo real se o programa vai processar uma matriz de 10 elementos ou 10.000 . Porque o tamanho da matriz é conhecida com antecedência , você tem que reservar memória e liberá-lo durante a execução do programa. Este gerenciamento de memória durante a execução é conhecido em ciência da computação , como alocação de memória dinâmica. Este artigo centra-se nas funções dedicadas a alocação dinâmica de memória em C. Coisas que você precisa 
 Ambiente de Desenvolvimento Integrado com C + + Compiler 
 Livro sobre programação C 
 Show Mais instruções 
 1 
 Incluir o arquivo de biblioteca com as definições da biblioteca padrão . Este é o arquivo " stdlib.h " e inclui , entre outras características importantes C , todas as funções que executam alocação dinâmica de memória . Para incluir este arquivo de biblioteca em seu programa, insira a seguinte linha na parte superior do seu arquivo de origem /header 
 Exemplo: . 
 # Include Página 2 
 Decida o que você quer fazer. Em seguida, escolher a função a partir das seguintes etapas que melhor se adapta a ação de alocação de memória que você deseja executar . 
 3 
 Use malloc () para um bloco de memória de tamanho conhecido . " Malloc " aloca bytes "tamanho" e retorna um ponteiro para o início do bloco 
 Prototype : 
 void * malloc ( size_t tamanho ); 
 Exemplo: . 
 Int i; 
 caractere * buf ; printf (" Digite o tamanho da string :"); 
 scanf ( "% d" , & i ); 
 buf = ( char *) malloc ( i +1) ; 
 if ( NULL == buf ) exit ( 1); 
 //etc 
 4 
 Empregar calloc () para um conjunto de elementos em que cada elemento tem um tamanho de mais de um byte . " Calloc " aloca um bloco de memória para "num" elementos cada elemento sendo bytes "tamanho" de comprimento. Ele retorna um ponteiro para o início do bloco 
 Prototype : 
 void * calloc ( size_t num, size_t tamanho ); 
 
 Exemplo: . 
 Int i , n; 
 int * Parr ; 
 printf ( "Digite o número de números inteiros :"); 
 scanf ( "% d" , & i ); 
 n = sizeof ( int); 
 Parr = (int *) calloc (i, n); 
 if ( NULL == SRPA) exit ( 1); 
 //etc 
 5 
 Utilize realloc () para alterar o tamanho de um bloco de memória. " Realloc " amplia ou reduz o bloco de memória do "tamanho" de bytes que " ptr " apontou para 
 Protótipo: . 
 Oid * realloc (void * ptr , size_t tamanho ); 
 Exemplo: 
 int num1 , num2 ; 
 int * arr = NULL; 
 fazer { 
 printf (" Digite um número inteiro positivo :"); 
 scanf ( "% d" , & num1 ); 
 while ( 1> num1 ); 
 arr = (int *) calloc ( num1 , sizeof (int) ); 
 if ( NULL == arr) exit ( 1); 
 fazer { 
 printf (" Digite outro número inteiro positivo : "); 
 scanf ( "% d " , & num2 ); 
 while (1 > num2 ); 
 arr = (int *) realloc ( arr, num2 * sizeof ( int) ); 
 if ( NULL == arr) exit ( 1); 
 //etc 
 6 
 Solte um bloco de memória alocada nas Etapas 3 a 5 usando free () . "Livre" libera o bloco de memória que começa no local da memória " ptr " apontou para 
 Protótipo: . 
 Void free (void * ptr ); 
 Exemplo: 
 int * buf ; 
 buf = (int *) malloc ( 100 * sizeof ( int) ); 
 livre ( buf ); 
 //etc