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