Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
I puntatori sono tipi particolari di variabili. Esistono tre tipi di puntatori supportati dal runtime: puntatori gestiti, non gestiti e puntatori a funzione non gestiti.
Un puntatore gestito, definito anche come handle per un oggetto nell'heap gestito, è un nuovo tipo di puntatore disponibile per le applicazioni gestite. I puntatori gestiti sono riferimenti a un blocco gestito di memoria dall'heap di Common Language Runtime. Su questo heap vengono eseguite automaticamente le operazioni di Garbage Collection. I puntatori gestiti sono generati per gli argomenti di metodo passati per riferimento. Alcuni linguaggi forniscono altri modi per generare puntatori gestiti. Solo i puntatori gestiti sono compatibili con CLS.
Nota: |
|---|
In Visual C++ 2002 e Visual C++ 2003 si utilizzava __gc * per dichiarare un puntatore gestito. In Visual C++ 2005 è stato sostituito da ^, ad esempio ArrayList^ al = gcnew ArrayList();. |
Un puntatore non gestito è un normale puntatore di C++ a un blocco di memoria non gestito dall'heap C++ standard. Poiché i puntatori non gestiti non sono parte di Common Language Specification (CLS), il linguaggio utilizzato potrebbe non fornire la sintassi per definire o accedere a questi tipi. Vedere la documentazione del linguaggio utilizzato per informazioni sul supporto ai puntatori non gestiti.
Un puntatore a funzione non gestito è anche un normale puntatore di C++ che fa riferimento all'indirizzo di una funzione. In CLS, come alternativa gestita ai puntatori a funzione non gestiti, vengono forniti i delegati.
Una definizione esplicita di un tipo di puntatore non è necessaria. Tutte le informazioni necessarie per determinare il tipo di un puntatore sono presenti quando il puntatore viene dichiarato.
Mentre i tipi di puntatore sono tipi di riferimento, il valore di un tipo di puntatore non è un oggetto e da tale valore non è possibile determinare il tipo esatto.
Il sistema di tipi comuni fornisce due operazioni indipendenti dai tipi sui tipi di puntatore: caricamento e inserimento di un valore da e nella posizione cui il puntatore fa riferimento. Queste operazioni indipendenti dai tipi sono compatibili con CLS.
Nel sistema di tipi comuni sui tipi di puntatore sono inoltre eseguibili tre operazioni aritmetiche di indirizzo basate su byte: somma e sottrazione di integer da puntatori e sottrazione di un puntatore da un altro. Come risultato delle prime due operazioni aritmetiche viene restituito un valore dello stesso tipo del puntatore originale. Queste operazioni basate su byte non sono compatibili con CLS.
Vedere anche
Concetti
Specifiche CLS (Common Language Specification)
Scrittura di codice compatibile con CLS
Nota: