operatore new (CRT)

Alloca il blocco di memoria dall'heap

void *__cdecl operator new(
   size_t count
);
void *__cdecl operator new(
   size_t count, 
   void * object
) throw();
void *__cdecl operator new(
   size_t count, 
   const std::nothrow_t&
) throw();

Parametri

  • conteggio
    La dimensione di.

  • object
    Un puntatore a un blocco di memoria in cui l'oggetto verrà creato.

Valore restituito

Un puntatore all'indirizzo di byte più basso di archiviazione appena allocati.

Note

Questa forma di operator new è noto come nuovo scalare, contrappone al nuovo forma vettoriale (operatore new []).

Il primo form di questo operatore è noto come il form di nonplacement.La seconda forma di questo operatore è noto come la forma di posizione e il terzo form di questo operatore è nonthrowing, forma di posizione.

Il primo form dell'operatore è definito dal compilatore e non richiede new.h di essere incluso nel programma.

operator delete libera la memoria allocata con operator new.

È possibile configurare se i nuovi restituisce l'operatore restituisce null o generare un'eccezione in caso di errore.vedere Il nuovo gli operatori e delete per ulteriori informazioni.

Ad eccezione di comportamento generando un'eccezione o non accessibili che genera, CRT operator new si comporta il simile operatore new nella libreria C++ standard.

Requisiti

routine

Intestazione di associazione

new

<new.h>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Librerie

Tutte le versioni di Librerie di runtime del linguaggio C.

Esempio

Di seguito viene mostrato come utilizzare l'operatore scalare, form di nonplacement di operator new.

// crt_new1.cpp
#include <stdio.h>
int main() {
   int * i = new int(6);
   printf("%d\n", *i);
   delete i;
}

Di seguito viene mostrato come utilizzare l'operatore scalare, forma di posizione di operator new.

// crt_new2.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * i = new int(12);
   printf("*i = %d\n", *i);
   // initialize existing memory (i) with, in this case, int(7)
   int * j = new(i) int(7);   // placement new
   printf("*j = %d\n", *j);
   printf("*i = %d\n", *i);
   delete i;   // or, could have deleted j
}

Di seguito viene mostrato come utilizzare l'operatore scalare, posizione, form di privi di generazione operator new.

// crt_new3.cpp
#include <stdio.h>
#include <new.h>
int main() {
   // allocates memory, initialize (8) and if call fails, new returns null
   int * k = new(std::nothrow) int(8);   // placement new
   printf("%d\n", *k);
   delete k;
}

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.

Vedere anche

Riferimenti

Allocazione di memoria