operator new (CRT)
Ordnet 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 wird als skalares neues, im Gegensatz zu dem neuen Formular des Vektors (Operator new[]).
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 nicht die auslösende Positionierungsform ist.
Das erste Formular des Operators wird vom Compiler definiert und nicht new.h erfordert, im Programm eingefügt werden.
Operator gibt den Arbeitsspeicher frei, der operator new zugeordnet ist.
Sie können konfigurieren, ob neue Operator 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 neu 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 Skalar, nonplacement Formular von operator new verwendet.
// 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 new verwendet.
// 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 Skalar, Platzierung, NO-THROW-Formular von operator new verwendet.
// 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. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.