/ / c ++ perdita di memoria e memoria spazzatura - c ++, gestione della memoria, perdite di memoria

perdita di memoria e memoria inutili c ++ - c ++, gestione della memoria, perdite di memoria

Posso vedere che se allociamo memoria dinamicamentein c ++, ma non lo gestisco correttamente, possiamo avere la memoria inutile, e possiamo essenzialmente ottenere perdite di memoria, ed è chiaro il motivo per cui ciò accade. Perché se, ad esempio, abbiamo un puntatore che punta a un indirizzo di memoria e assegniamo questo puntatore a un altro spazio indirizzo prima di liberare l'indirizzo corrente, allora è un problema. Ma quello che non capisco è che diciamo che abbiamo un cattivo programma che continua ad aggiungere memoria inutile, ma come mai tutto torna alla normalità, quando chiudiamo il programma. Se per esempio, abbiamo una memoria inutile che è stata introdotta con un programma c ++, quindi non c'è più puntatore che punta a quella memoria inutile, e come mai dopo aver chiuso il programma, viene liberata tutta la memoria inutile? Come fa il programma a sapere come pulire la memoria spazzatura prima che il programma si chiuda?

risposte:

3 per risposta № 1

Non c'è memoria inutile, non è il tuo programmache alloca e libera la memoria. È il sistema operativo sottostante. Stai lavorando su un sistema operativo, usando i suoi servizi. La memoria heap e il negozio gratuito sono solo un'astrazione fornita da questi servizi (Tra le altre astrazioni tali file, "Io sono l'unico processo in esecuzione in questa CPU univoca", ecc.)


1 per risposta № 2

Su sistema operativo Windows il sistema operativo ripulisce la memoria allocata da un processo. Quindi, fondamentalmente getta via lo spazio che è stato dato a un processo senza preoccuparsi di ciò che conteneva.