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