Nuova libreria C ++ - operatore nuovo []

Descrizione

Alloca lo spazio di archiviazione per l'array.

Dichiarazione

Di seguito è riportata la dichiarazione per l'operatore new [].

void* operator new[] (std::size_t size) throw (std::bad_alloc);   (throwing allocation)
void* operator new[] (std::size_t size, const std::nothrow_t& nothrow_value) throw();   (nothrow allocation)
void* operator new[] (std::size_t size, void* ptr) throw();   (placement)

C ++ 11

void* operator new[] (std::size_t size);    (throwing allocation)
void* operator new[] (std::size_t size, const std::nothrow_t& nothrow_value) noexcept;	(nothrow allocation)
void* operator new[] (std::size_t size, void* ptr) noexcept;    (placement)

Parametri

  • size - Contiene la dimensione in byte del blocco di memoria richiesto.

  • nothrow_value - Contiene il costante nothrow.

  • ptr - È un puntatore a un blocco di memoria già allocato della dimensione corretta.

Valore di ritorno

Restituisce un puntatore allo spazio di archiviazione appena allocato.

Eccezioni

Se non riesce ad allocare la memoria, lancia bad_alloc.

Gare di dati

Modifica la memoria a cui fa riferimento il valore restituito.

Esempio

Nell'esempio seguente viene spiegato il nuovo operatore.

#include <iostream>
#include <new>

struct MyClass {
   int data;
   MyClass() {std::cout << '@';}
};

int main () {
   std::cout << "constructions (1): ";
   MyClass * p1 = new MyClass[10];
   std::cout << '\n';

   std::cout << "constructions (2): ";
   MyClass * p2 = new (std::nothrow) MyClass[5];
   std::cout << '\n';

   delete[] p2;
   delete[] p1;

   return 0;
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

constructions (1): @@@@@@@@@@
constructions (2): @@@@@