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.

Siehe auch

Referenz

Speicherbelegung