Skip to content
This repository has been archived by the owner on Jun 16, 2023. It is now read-only.

Commit

Permalink
recupera lezione giov 11
Browse files Browse the repository at this point in the history
  • Loading branch information
mc-cat-tty committed Nov 16, 2021
1 parent 467d2f5 commit 85ad8f0
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions 15_array_dinamici.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Continuo appunti array dinamici

Spesso la dimensione del vettore si conosce solo a tempo di esecuzione. Possiamo usare un array statico "sovradimensionato", utilizzando solamente lo spazio necessario.

Due metodi:
- mantenere in memoria il numero di "celle" utilizzate
- utilizzare un terminatore posto dopo l'ultimo elemento valido dell'array. Se tutto l'intervallo del tipo di dato è assumibile dai valori nell'array non posso usare questa tecnica

Esiste l'oggetto `vector` nella C++ standard library

Attenzione: la memoria riservata ad un programma contiene dati e strutture dati del programma, letterali definiti dal programmatore, funzioni e tabelle di supporto, generate dal compilatore. Attraverso un accurato uso degli indici dell'array posso accedere a locazioni non utilizzate o "riservate" (non dovrebbero essere accessibili)

Errori come il `segmentation fault` segnalano che si è cercato di accedere al di fuori dello spazio allocato. La `memory corruption` è un errore di scrittura, sollevato dal OS quando si cerca di sovrascrivere una parte di memoria non consentita.

I moderni OS etichettano alcune aree della memoria come non modificabili (memoria protetta in scrittura o lettura).

Segmentation fault: dato che la memoria è divisa in segmenti, questo errore viene sollevato quando si cerca di accedere ad un segmento non proprio.

## Selection sort

Trovo l'elemento più piccolo dell'array e lo metto all'inizio del vettore (posizione corrente del puntatore)

```
// il primo indice (i) scorre gli elementi da 0 a N-1
// il secondo indice (j) scorre gli elementi da i+1 a N
// trovo il minimo
// scambio il minimo con l'elemento in posizione corrente (i)
```

0 comments on commit 85ad8f0

Please sign in to comment.