Freigeben über


operator new[] (CRT)

Zuordnen 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 werden als neuer Vektor, im Gegensatz zum skalaren neuen Formular (Operator neu).

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 nonthrowing die Positionierungsform ist.

Das erste Formular des Operators wird vom Compiler definiert und nicht new.h erfordert, im Programm eingefügt werden.

Operator delete[] gibt den Arbeitsspeicher frei, der mit dem Operator new zugeordnet ist.

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

// 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 von operator new verwendet.

// 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 den Vektor, Platzierung, NO-THROW-Formular von operator new verwendet.

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