Operator neu (CRT)

Ordnen Sie 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 neuer Vektor, im Gegensatz zu den skalaren neuen Formular (Operator neu).

Die erste Form dieses Operators bezeichnet als das nonplacement Formular.Die zweite Form dieses Operators bezeichnet wird, da die Positionierungsform und das dritte Form dieses Operators nonthrowing die 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 dem Operator new zugeordnet ist.

Sie können konfigurieren, ob 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 newnew [] - Operators 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 die vektorielle, nicht außerhalb der Form von operator newverwendet.

// 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 des operator newverwendet.

// 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 der Position, NO-THROW-Formular Vektor, der operator newverwendet.

// 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;
}

Siehe auch

Referenz

Speicherbelegung