Condividi tramite


Come attività recenti

allocazione-espressione - contenere di espressione nuovo operator - effettua tre operazioni:

  • Individua e riserva archiviazione per l'oggetto o gli oggetti vengono allocati.Durante questa fase è stata completata, la quantità corretta di archiviazione viene allocata, ma non è ancora un oggetto.

  • inizializza gli oggetti.Una volta che l'inizializzazione è stata completata, informazioni sufficienti sono presenti per la memoria allocata da un oggetto.

  • restituisce un puntatore agli oggetti di un tipo di puntatore derivato da nuovo-tipo-nome o nome del tipo.Il programma utilizza questo puntatore per accedere all'oggetto appena allocato.

nuovo l'operatore richiama la funzione operator new.per le matrici di qualsiasi tipo e per gli oggetti di cui non essere classe, struct, o unione tipi, una funzione globale, :: operatore new, viene chiamato per allocare memoria.gli oggetti del Classe-tipo possono definire il proprio operator new funzione membro statico in base a per-classe.

Quando il compilatore rileva nuovo operatore per allocare un oggetto di tipo type, genera una chiamata a type**:: operatore new (sizeof (** type )) o, se non definito dall'utente operator new viene definito, :: operatore new (sizeof ( type )).di conseguenza, nuovo l'operatore possibile assegnare la quantità di memoria corretta per l'oggetto.

[!NOTA]

L'argomento in operator new è di tipo size_t.questo tipo è definito in DIRECT.H, in MALLOC.H, in MEMORY.H, in SEARCH.H, in STDDEF.H, in STDIO.H, in STDLIB.H, in STRING.H e in TIME.H.

Un'opzione nella grammatica consente la specifica di percorso (vedere la grammatica per operatore new). percorso il parametro può essere utilizzato solo per le implementazioni definite dall'utente operator new; consente le informazioni aggiuntive da passare a operator new.Un'espressione con un oggetto percorso campo come T *TObject = new ( 0x0040 ) T; viene convertito in T *TObject = T::operator new( sizeof( T ), 0x0040 ); se la classe Toperatore membro nuovo in caso contrario, a T *TObject = ::operator new( sizeof( T ), 0x0040 );.

Lo scopo originale di percorso il campo è di consentire gli oggetti hardware-dipendenti da allocare gli indirizzi definiti dall'utente.

[!NOTA]

Sebbene l'esempio precedente visualizzare solo un argomento in percorso campo, non essere la restrizione sul numero di argomenti aggiuntivi può essere passato operator new in questo modo.

anche quando operator new è stato definito per un tipo di classe, l'operatore globale può essere utilizzato tramite il form dell'esempio seguente:

T *TObject =::new TObject;

L'operatore di risoluzione dell'ambito (::) utilizzo di punti di forza di globale nuovo operatore.

Vedere anche

Riferimenti

operatore new (C++)