Menu
Coddy logo textTech

Memória Stack vs. Heap

Parte da seção Logic & Flow do Journey de C da Coddy — lição 31 de 63.

Quando o seu programa C é executado, ele utiliza duas regiões distintas de memória: a stack e o heap. Compreender a diferença entre essas áreas de memória é crucial para uma programação em C eficaz, especialmente ao trabalhar com ponteiros e alocação dinâmica de memória.

A pilha (stack) é usada para alocação estática de memória. É aqui que suas variáveis locais, parâmetros de função e informações de chamada de função são armazenados. A pilha é gerenciada automaticamente pelo sistema - quando você declara uma variável local, a memória é alocada na pilha e, quando a variável sai de escopo, essa memória é liberada automaticamente.

void function() {
    int x = 10;  // Alocado na pilha
    char arr[100];  // Também alocado na pilha
    // A memória é liberada automaticamente quando a função termina
}

O heap é usado para alocação dinâmica de memória. Este é um pool de memória maior que você pode solicitar durante a execução do programa.

Diferente da stack, o heap requer gerenciamento manual - você deve solicitar memória explicitamente e liberá-la posteriormente quando terminar. Isso lhe dá mais controle, mas também mais responsabilidade.

A principal diferença é o gerenciamento: a memória stack é automática e limitada em tamanho, enquanto a memória heap é manual e muito maior. Nas próximas lições, você aprenderá como trabalhar com a memória heap usando funções como malloc() e free().

Folha de consulta

Programas em C usam duas regiões de memória distintas:

Stack: Usada para alocação estática de memória. Armazena variáveis locais, parâmetros de função e informações de chamada de função. A memória é gerenciada automaticamente - alocada quando as variáveis são declaradas e liberada quando saem do escopo.

void function() {
    int x = 10;  // Alocado na stack
    char arr[100];  // Também alocado na stack
    // A memória é liberada automaticamente quando a função termina
}

Heap: Usado para alocação dinâmica de memória. Um pool maior de memória que requer gerenciamento manual - você deve solicitar e liberar memória explicitamente usando funções como malloc() e free().

Diferença principal: A memória stack é automática e de tamanho limitado, enquanto a memória heap é manual e muito maior.

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow