Programar em C/Gerenciamento de memória: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Edudobay (discussão | contribs)
m nav
Edudobay (discussão | contribs)
Sem resumo de edição
Linha 2:
== Alocação dinâmica ==
 
Todos os dados de um programa são armazenados na memória do computador; é muito comum necessitar reservar um certo espaço na memória para poder guardar dados mais tarde. Por exemplo, poderíamos reservar um espaço de 1000 bytes para guardar uma string que o usuário viesse a digitar, declarando um vetor de 1000 caracteres. E se quiséssemos reservar um espaço que só é conhecido no tempo de execução do programa? E se o espaço fosse muito grande, de modo que declarar vetores de tal tamanho seria inconveniente (pois, entre outras coisas, aumenta sem necessidade o tamanho do executável)?
=== malloc ===
 
Para solucionar esse problema, existe a '''alocação dinâmica de memória''', que como o nome sugere, é uma maneira de alocar memória à medida que o programa vai sendo executado. As quatro funções relacionadas com a alocação dinâmica serão descritas a seguir.
=== free ===
 
=== <tt>malloc</tt> e <tt>free</tt> ===
 
Essas duas funções são as mais básicas para o gerenciamento de memória. '''<tt>malloc</tt>''' é responsável pela alocação de um pedaço de memória, e '''<tt>free</tt>''' é responsável por liberar esse pedaço de memória.
 
Para alocar um espaço na memória, precisamos fornecer à função <tt>malloc</tt> o número de bytes desejados. Para isso, precisaremos usar o operador <tt>sizeof</tt>, introduzido na seção anterior.
 
=== calloc ===