Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Gli svantaggi di puntatori in C

Nel linguaggio di programmazione C , puntatori negozio informazione indirizzo per locazioni di memoria nel computer. Essi permettono anche un programma per consentire chiedere al computer per la memoria (o memoria di " allocare" ) durante l'esecuzione. Perché i puntatori occupano memoria dinamicamente , sono dotati di certi pericoli e svantaggi , nonostante la loro necessità . Perdite di memoria

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