operator new[] (CRT)
Zuordnen Speicherblock im Heap zu
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();
Parameter
count
Die Größe der Speicherbelegung.Objekt
Ein Zeiger auf einen Speicherblock, in dem das Objekt erstellt wird.
Rückgabewert
Ein Zeiger zur niedrigsten Byteadresse des neu reserviertes Speicher.
Hinweise
Dieses Formular von operator new werden als neuer Vektor, im Gegensatz zum skalaren neuen Formular (Operator neu).
Das erste Formular dieses Operators wird als das nonplacement Formular. Das zweite Format dieses Operators bezeichnet, da die Positionierungsform und das dritte Formular dieses Operators nonthrowing die Positionierungsform ist.
Das erste Formular des Operators wird vom Compiler definiert und nicht new.h erfordert, im Programm eingefügt werden.
Operator delete[] gibt den Arbeitsspeicher frei, der mit dem Operator new zugeordnet ist.
Sie können konfigurieren, ob operator new[] gibt NULL oder lösen eine Ausnahme auf Fehler aus. Weitere Informationen finden Sie unter Die Operatoren new und delete.
Mit Ausnahme von auslösendem oder NO-auslösendem Verhalten verhält sich das CRT operator new wie Operator new[] in der C++-Standardbibliothek.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
new[] |
<new.h> |
Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Bibliotheken
Alle Versionen C-Laufzeitbibliotheken.
Beispiel
Im Folgenden wird gezeigt, wie die vektorielle, nicht außerhalb Form von operator new verwendet.
// crt_new4.cpp
#include <stdio.h>
int main() {
int * k = new int[10];
k[0] = 21;
printf("%d\n", k[0]);
delete [] k;
}
Im Folgenden wird gezeigt, wie die vektorielle Positionierungsform von operator new verwendet.
// 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
}
Im Folgenden wird gezeigt, wie den Vektor, Platzierung, NO-THROW-Formular von operator new verwendet.
// 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;
}