operatore new (CRT)

Allocare 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 vettori nuovo, contrappone al nuovo form operatore scalareoperatore 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 è la forma nonthrowing 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 l'operatore nuovo.

È possibile configurare in operator new[] restituisce null o genera 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 il vettore, form di nonplacement di operator new.

// crt_new4.cpp
#include <stdio.h>
int main() {
   int * k = new int[10];
   k[0] = 21;
   printf("%d\n", k[0]);
   delete [] k;
}

Di seguito viene mostrato come utilizzare il vettore, forma di posizione di operator new.

// crt_new5.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * i = new int[10];
   i[0] = 21;
   printf("%d\n", i[0]);
   // initialize existing memory (i) with, in this case, int[[10]
   int * j = new(i) int[10];   // placement vector new
   printf("%d\n", j[0]);
   j[0] = 22;
   printf("%d\n", i[0]);
   delete [] i;   // or, could have deleted [] j 
}

Di seguito viene mostrato come utilizzare il vettore, posizione, form di privi di generazione operator new.

// crt_new6.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * k = new(std::nothrow) int[10];
   k[0] = 21;
   printf("%d\n", k[0]);
   delete [] k;
}

Vedere anche

Riferimenti

Allocazione di memoria