Quando una memoria richieste programma attraverso l'uso di un puntatore , che puntatore deve continuamente riferimento alla memoria allocata . Se in qualsiasi momento una posizione di memoria allocata non ha un puntatore corrispondente ( se tutti i puntatori relativi alla memoria sono " punte" altrove) , che la memoria non può più essere letta dal programma . Questa memoria è ormai " orfano ". Tuttavia, il computer considera ancora questa memoria allocata . Come un programma viene eseguito continuamente , e le stesse linee di codice vengono eseguite milioni di volte , un errore di allocazione di memoria da un errore di puntatore possono riempire rapidamente la memoria disponibile con i dati inaccessibili , causando una perdita di memoria .
puntatori nulli
puntatori che non si riferiscono ad un indirizzo in memoria vengono chiamati puntatori " null" . Mentre servono funzioni utili in programmazione (come a significare errori di allocazione di memoria ) , un grave problema si verifica quando " dereferencing " un puntatore nullo ( dereferencing un puntatore significa per accedere ai dati in locazione di memoria a cui fa riferimento il puntatore ) . Quando un programma è scritto , nessuna sicurezza controlla gestire la dereferenziazione di un puntatore nullo . In effetti, un gran programma può solo dereferenziare accidentalmente un puntatore nullo , da qualche parte nel profondo milioni di righe di codice . Quando viene eseguito il codice, tuttavia, un puntatore nullo dereferenziato causerà un programma di crash .
Buffer Overflow
un sovraccarico di memoria ( o " buffer overflow " ) si verifica quando la memoria allocata da un puntatore non è abbastanza grande per l' ingresso rilevato. Ad esempio, se un programma alloca memoria per una parola lunga sette caratteri e riceve in ingresso una parola lunga nove caratteri , i due caratteri extra vengono memorizzati nella memoria di fuori della memoria puntatore sette caratteri . I due personaggi extra sovrascrivono qualsiasi cosa in esso contenute. Non vi è alcun modo per il programma di sapere cosa esistente in tali due posizioni di memoria extra. Essi potrebbero contenere dati sensibili per il programma (come variabili di programma ) , o anche per il computer stesso . Questo porta a " corruzione dei dati ", come i dati che avrebbero dovuto essere intatto all'esterno la memoria allocata è ormai compromessa .
Programmazione © www.354353.com