Freigeben über


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.

Siehe auch

Referenz

Speicherbelegung