Operator neu (CRT)
Ordnet Speicherblock aus dem 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();
Parameter
Anzahl
Die Größe der Reservierung.Objekt
Ein Zeiger auf einen Speicherblock, in dem das Objekt erstellt wurde.
Rückgabewert
Ein Zeiger auf die niedrigsten Byte adresse des neu zugeordneten Speichers.
Hinweise
Diese Art von operator new wird als skalares neue, im Gegensatz zum neuen Form des Vektors (new [] - Operators).
Die erste Form dieses Operators bezeichnet als das nonplacement Formular.Die zweite Form dieses Operators bezeichnet wird, da die Positionierungsform und das dritte Form diesem Operator nicht die auslösende Positionierungsform ist.
Die erste Form des Operators wird vom Compiler definiert und nicht im Programm erfordert, new.h eingefügt werden können.
Operator delete gibt den Arbeitsspeicher frei, der mit operator newzugeordnet ist.
Sie können konfigurieren, ob der Operator new NULL zurückgibt, oder bei Fehlern eine Ausnahme auslöst.Weitere Informationen finden Sie unter Das neue und delet-Operatoren .
Mit Ausnahme von auslösendem oder NO-auslösendem Verhalten der CRT verhält sich wie operator newOperator neu in der C++-Standardbibliothek.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
new |
<new.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
Bibliotheken
Alle Versionen Cs.
Beispiel
Im Folgenden wird gezeigt, wie das Skalar, nonplacement Formular von operator newverwendet.
// crt_new1.cpp
#include <stdio.h>
int main() {
int * i = new int(6);
printf("%d\n", *i);
delete i;
}
Im Folgenden wird gezeigt, wie die skalare Positionierungsform von operator newverwendet.
// 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
}
Im Folgenden wird gezeigt, wie das Skalar, Platzierung, NO-THROW-Formular von operator newverwendet.
// 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;
}
.NET Framework-Entsprechung
Nicht zutreffend. Um die Standard-C-Funktion aufzurufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.