Sobes.tech
Junior — Middle

Explique as diferenças entre a gestão de memória na pilha e no heap no contexto da programação.

sobes.tech IA

Resposta da IA

Na programação, a memória geralmente é gerida de duas formas principais: a pilha e o heap.

Pilha — é uma área de memória onde são armazenadas variáveis locais e parâmetros de funções. Funciona segundo o princípio LIFO (último a entrar, primeiro a sair). A memória na pilha é alocada e libertada automaticamente ao entrar e sair das funções, o que é muito rápido e eficiente. No entanto, o tamanho da pilha é limitado, e não é possível armazenar objetos grandes ou dados com tempo de vida dinâmico.

Heap — é uma área de memória para alocação dinâmica, onde os objetos são criados e permanecem enquanto existirem referências a eles (em Go, o coletor de lixo liberta automaticamente a memória não utilizada). A memória no heap é alocada e libertada manualmente ou automaticamente, o que é mais lento do que na pilha, mas permite criar objetos com tempos de vida arbitrários e tamanhos maiores.

Exemplo em Go:

func exemplo() {
    x := 10           // variável x armazenada na pilha
    p := new(int)     // alocação de memória no heap
    *p = 20
}

Aqui, x é uma variável local na pilha, e p aponta para memória no heap.

Resumindo:

  • Pilha: alocação/liberação rápida, tamanho limitado, dados locais.
  • Heap: alocação dinâmica, tamanho maior, gestão do tempo de vida dos objetos.