Nueva biblioteca de C ++: operador nuevo []

Descripción

Asigna espacio de almacenamiento para la matriz.

Declaración

A continuación se muestra la declaración del operador 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)

Parámetros

  • size - Contiene tamaño en bytes del bloque de memoria solicitado.

  • nothrow_value - Contiene el nothrow constante.

  • ptr - Es un puntero a un bloque de memoria ya asignado del tamaño adecuado.

Valor devuelto

Devuelve un puntero al espacio de almacenamiento recién asignado.

Excepciones

Si no puede asignar almacenamiento, arroja bad_alloc.

Carreras de datos

Modifica el almacenamiento al que hace referencia el valor devuelto.

Ejemplo

En el siguiente ejemplo se explica sobre el nuevo operador.

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

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

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