Pesquisa · Mapa mental

Aquisição de Recurso é Inicialização

RAII (Resource Acquisition Is Initialization) é um padrão de projeto de software crucial em C++, D e Rust. Ele une a aquisição e liberação de recursos com a inicialização e destruição de objetos, garantindo que recursos sejam gerenciados de forma segura e automática.

Fonte: Wikipédia (pt)Texto didático por IAAtualizado em 11/10/2026

Pontos-chave

  • RAII associa a vida útil de um recurso à vida útil de um objeto.
  • A aquisição de recursos ocorre na inicialização do objeto.
  • A liberação de recursos ocorre na destruição do objeto.
  • Previne vazamentos de memória e outros problemas de gerenciamento de recursos.
  • Simplifica o código e aumenta a robustez do programa.
01

Exemplos Práticos

Veja como RAII é aplicado em cenários comuns de gerenciamento de recursos.

Alocação Dinâmica de Memória

Em C++, para alocar memória dinamicamente (durante a execução), usamos o operador `new`. Para liberar essa memória, usamos `delete[]`. Se a liberação não ocorrer após o uso, a memória alocada permanece ocupada até o fim do programa, pois C++ não possui um coletor de lixo automático. Isso é conhecido como 'vazamento de memória' (memory leak). Múltiplos vazamentos, especialmente em loops, podem esgotar a memória do sistema, causando lentidão e falhas. RAII resolve isso garantindo que a memória seja liberada automaticamente quando o objeto que a gerencia sai de escopo.

Gerenciamento de Arquivos

Uma classe pode encapsular o gerenciamento de um arquivo usando RAII. Ela adquire o recurso (o ponteiro `FILE*`) na sua inicialização e o libera automaticamente quando o objeto é destruído. Isso elimina a necessidade de chamar manualmente funções como `fclose`, pois a classe cuida disso. A essência do RAII aqui é que a classe gerencia o ciclo de vida do recurso `FILE*`, garantindo sua aquisição e liberação sem intervenção explícita do programador a cada uso.

02

RAII vs. Coletor de Lixo

Compare a abordagem RAII com o gerenciamento automático de memória em linguagens como Java.

Vídeos recomendados

Fontes consultadas

Continue pesquisando