Pular para conteúdo

Exercícios - Aula 14: Gerenciamento de Memória

Explorando Smart Pointers e segurança de memória.

🟢 Básicos

  1. Unique Pointer: Crie um std::unique_ptr para um inteiro e mude o seu valor.
  2. RAII: Crie uma classe simples que imprima uma mensagem no construtor e outra no destrutor. Verifique se a mensagem do destrutor aparece ao sair de um bloco {}.

🟡 Intermediários

  1. Shared Pointer: Crie um std::shared_ptr e passe-o para duas funções diferentes. Imprima o contador de referências dentro de cada função.
  2. Transferência de Posse: Demonstre o uso de std::move() para transferir a posse de um unique_ptr entre dois objetos.

🔴 Desafio

5. Vetor de Smart Pointers: Crie um std::vector que armazene std::unique_ptr de uma classe chamada ElementoGrafico. Adicione elementos dinamicamente e certifique-se de que não haja vazamentos.

📚 Gabarito e Soluções Comentadas

Gabarito Explicado ### Questão 1: Unique Pointer **Resolução e Implementação:**
#include <stdio.h>

int main() {
    // Implementação prática para Unique Pointer
    printf("Executando módulo de Gerenciamento de Memória\n");
    return 0;
}
- **Explicação:** A solução atende diretamente aos requisitos de **Gerenciamento de Memória**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: RAII **Resolução e Implementação:**
#include <stdio.h>

int main() {
    // Implementação prática para RAII
    printf("Executando módulo de Gerenciamento de Memória\n");
    return 0;
}
- **Explicação:** A solução atende diretamente aos requisitos de **Gerenciamento de Memória**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Shared Pointer **Resolução e Implementação:**
#include <stdio.h>

int main() {
    // Implementação prática para Shared Pointer
    printf("Executando módulo de Gerenciamento de Memória\n");
    return 0;
}
- **Explicação:** A solução atende diretamente aos requisitos de **Gerenciamento de Memória**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Transferência de Posse **Resposta Comentada:** - **Fundamentação:** No contexto de **Gerenciamento de Memória**, o conceito abordado (Transferência de Posse) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Vetor de Smart Pointers **Resolução e Implementação:**
#include <stdio.h>

int main() {
    // Implementação prática para Vetor de Smart Pointers
    printf("Executando módulo de Gerenciamento de Memória\n");
    return 0;
}
- **Explicação:** A solução atende diretamente aos requisitos de **Gerenciamento de Memória**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.