operator new[] (CRT)
Alloca un 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
count
Dimensione dell'allocazione.object
Un puntatore a un blocco di memoria in cui l'oggetto verrà creato.
Valore restituito
Un puntatore all'indirizzo di byte più basso dell'archiviazione appena allocata.
Note
Questo modulo di operator new è nota come vettore nuovo, in contrasto al nuovo modulo scalare (operatore nuovo).
Il primo modulo di questo operatore è noto come modulo di nonplacement. Il secondo modulo di questo operatore è noto come modulo di posizione ed il terzo è il modulo di posizione nonthrowing.
Il primo modulo dell'operatore è definito dal compilatore e non richiede che new.h venga incluso nel programma.
l'operatore delete[] libera la memoria allocata con l'operatore new.
È possibile configurare se operator new[] debba restituire null o generare un'eccezione in caso di errore. Per maggiori informazioni vedere Operatori new e delete.
Ad eccezione del comportamento di generazione o non generazione, operator new di CRT si comporta come l'operatore new[] della libreria C++ standard.
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
new[] |
<new.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.
Librerie
Tutte le versioni delle Librerie di runtime C.
Esempio
Di seguito viene mostrato come utilizzare il vettore, il modulo 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, il modulo di placement 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, il modulo di placement senza generazione di 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;
}