freeCodeCamp/guide/portuguese/c/malloc/index.md

42 lines
2.0 KiB
Markdown

---
title: malloc
localeTitle: malloc
---
# malloc em C
malloc () é uma função de biblioteca que permite que C aloque dinamicamente a memória do heap. O heap é uma área da memória em que algo é armazenado.
malloc () faz parte do stdlib.h e para poder usá-lo você precisa usar `#include <stdlib.h>` .
## Usando Malloc
malloc () aloca memória de um tamanho solicitado e retorna um ponteiro para o início do bloco alocado. Para manter este ponteiro retornado, devemos criar uma variável. O ponteiro deve ser do mesmo tipo usado na instrução malloc.
Aqui vamos fazer um ponteiro para um conjunto de ints
```C
int* arrayPtr;
```
Ao contrário de outras linguagens, C não sabe o tipo de dados para o qual está alocando memória; precisa ser contada. Felizmente, C tem uma função chamada `sizeof()` que podemos usar.
```C
arrayPtr = (int *)malloc(10 * sizeof(int));
```
Esta declaração usou malloc para separar memória para um array de 10 inteiros. Como os tamanhos podem mudar entre os computadores, é importante usar a função sizeof () para calcular o tamanho no computador atual.
Qualquer memória alocada durante a execução do programa precisará ser liberada antes do fechamento do programa. Para `free` memória, podemos usar a função free ()
```C
free( arrayPtr );
```
Esta declaração desalocará a memória anteriormente alocada. C não vem com um `garbage collector` como outras linguagens, como Java. Como resultado, a memória não liberada corretamente continuará a ser alocada após o programa ser fechado.
# Antes de você ir ...
## Uma revisão
* O Malloc é usado para alocação de memória dinâmica e é útil quando você não sabe a quantidade de memória necessária durante o tempo de compilação.
* A alocação de memória permite que objetos existam além do escopo do bloco atual.
* C passa por valor em vez de referência. Usando malloc para atribuir memória e, em seguida, passar o ponteiro para outra função, é mais eficiente do que ter a função recriar a estrutura.