Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> Computer Programming Languages >> .

Vantaggi e svantaggi del Puntatori

A seconda di chi si chiede , i puntatori sono sia una benedizione o una maledizione . Puntatori forniscono un meccanismo per accedere direttamente e modificare oggetti e il codice in memoria. I puntatori sono utilizzati in molti linguaggi di programmazione per la manipolazione di stringhe di caratteri , passare i parametri alle funzioni , la gestione array di dati , e la creazione di liste collegate e altre strutture di dati complessi . Mentre puntatori forniscono una grande flessibilità per la gestione della memoria e ottimizzazione di algoritmi , ci sono svantaggi . Imparare a utilizzare i puntatori è difficile per molti programmatori , e il debug dei problemi del puntatore è impegnativo . Ottimizzazione

puntatori forniscono un vantaggio di prestazioni, consentendo di accedere direttamente alla memoria del computer . In un programma per computer , il modo più veloce per accedere e modificare un oggetto è quello di accedere direttamente alla memoria fisica in cui l'oggetto viene memorizzato . Questa tecnica viene comunemente utilizzata per ottimizzare gli algoritmi che richiedono un accesso frequente o ripetitiva di grandi quantità di dati .
Sicurezza

Accesso diretto alla memoria significa che è possibile fare cose che forse si non dovrebbe. A seconda della lingua , il compilatore e la piattaforma del computer , si potrebbe involontariamente ( o intenzionalmente ), memoria ad accesso che non è tuo per accedere . Di conseguenza , si potrebbe sovrascrivere la memoria critica , modificare il codice di un'applicazione in esecuzione , o causare l'applicazione o un'altra applicazione di comportarsi o di uscire in modo imprevisto . Un errore comune è quello di eseguire oltre la fine di un array, l'accesso alla memoria oltre la fine dello spazio allocato per tale matrice .
Gestione della memoria

Gestire l'utilizzo della memoria in un'applicazione utilizzando puntatori offre flessibilità , ma è anche un lavoro di routine . Allocazione e deallocazione di memoria necessaria in fase di esecuzione consente di creare oggetti di grandi dimensioni , come ad esempio gli array , in modo rapido e subito liberare la memoria quando non è più necessaria . Tuttavia, è anche facile creare perdite di memoria riassegnando un puntatore senza liberare la memoria che stava puntando al primo . Garbage Collection è la vostra responsabilità .
Parametri di funzione
Funzioni

può restituire un solo valore , ma possono prendere più parametri . Passando in puntatori a variabili come parametri , una funzione può essere utilizzata per impostare i valori di tali variabili , ed i nuovi valori persisterà dopo la funzione restituisce. Essendo in grado di impostare il valore di diverse variabili in una volta con una singola chiamata di funzione è pulito ed efficiente . Tuttavia, può essere un po 'di confusione a leggere , perché non si può dire se le variabili passati saranno modificati o non semplicemente guardando la chiamata di funzione . Avrete bisogno di guardare la documentazione di funzione per imparare la funzione si comporta
Funzione Puntatori

puntatori non sono solo per gli oggetti in memoria, . Possono essere utilizzati anche per funzioni , permettendo così una funzione da passare come parametro a un'altra funzione . Un puntatore funzione può essere assegnato l' indirizzo di una di una scelta di funzioni in modo che il puntatore agisce come una sorta di alias . Object -oriented linguaggi di programmazione hanno eliminato la necessità di puntatori a funzione con l'ereditarietà e il polimorfismo .
Pointer Confusione

puntatori sono un argomento di confusione per molti programmatori , in particolare quelli con esperienza nel utilizzando linguaggi che non dispongono di puntatori e di accesso diretto alla memoria . Tuttavia, la persistenza porta rapidamente alla padronanza di puntatori . I puntatori sono spesso accompagnati da sintassi oscura . Convenzioni di denominazione coerenti delle variabili può aiutare il vostro codice più leggibile . Ad esempio , le convenzioni di denominazione comuni includono l'utilizzo di " P_ " o " ptr_ " come prefisso per i nomi delle variabili del puntatore .
Consigli

Utilizzare sempre le funzioni di allocazione fornite dal linguaggio per la memoria di allocazione , e verificare che la memoria è stata allocata prima di utilizzarlo. Siate cauti con la gestione della memoria , e la memoria fino libero quando non è più necessaria . Se si riassegna un puntatore ad un nuovo indirizzo di memoria , assicurarsi che la vecchia memoria viene liberata o assegnato ad un puntatore diverso . Assicurarsi che i puntatori creati in funzione è stata assegnata la proprietà al campo genitore o che la memoria viene deallocato prima di uscire dalla funzione .

 

Programmazione © www.354353.com