lezione 02

puntatori e smart pointer

controllo di memoria con sicurezza e stile moderno.

livello: intermedio durata: 25 min output: gestione risorse badge: pointers

raw pointers

i puntatori raw sono potenti ma richiedono attenzione.

int value = 10;
int* ptr = &value;
*ptr = 20;

smart pointer

usa smart pointer per ownership chiara.

#include <memory>

auto data = std::make_unique<int>(42);

references

le reference semplificano il passaggio di dati senza copie.

void inc(int& value) { value++; }

pratiche sicure

  • evita new/delete diretti quando possibile
  • preferisci std::unique_ptr per ownership singola
  • usa std::shared_ptr solo se necessario

tip: applica il principio raii per eliminare leak.

panoramica

In questo capitolo su puntatori e smart pointer, controllo di memoria con sicurezza e stile moderno. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.

Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).

badge: pointers

obiettivi

  • capire e applicare raw pointers in uno scenario reale
  • capire e applicare smart pointer in uno scenario reale
  • capire e applicare references in uno scenario reale
  • capire e applicare pratiche sicure in uno scenario reale

scheda rapida

#include <iostream>
#include <vector>

int main() {
  std::vector<int> dati{1, 2, 3};
  for (auto &v : dati) {
    v *= 2;
  }
  for (const auto &v : dati) {
    std::cout << v << " ";
  }
  std::cout << "\n";
  return 0;
}

Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.

tips

  • compila con warning elevati
  • preferisci RAII
  • usa const ovunque possibile
  • preferisci reference se possibile
  • non usare pointer non inizializzati
  • controlla ownership

tip: Se non sai chi libera la memoria, hai un bug.

mini progetto

Piccolo esercizio di gestione memoria.

  • alloca un array
  • passa pointer a funzione
  • modifica valore
  • libera la risorsa

output atteso: uno script o query ripetibile con risultati verificabili.

checklist

  • ho eseguito gli snippet e controllato l'output
  • ho annotato almeno 2 trade-off
  • ho completato il mini progetto
  • ho salvato un riepilogo personale
start a brief