Nova Biblioteca C ++ - operador novo []

Descrição

Ele aloca espaço de armazenamento para a matriz.

Declaração

A seguir está a declaração para o 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 - Contém o tamanho em bytes do bloco de memória solicitado.

  • nothrow_value - Ele contém o nothrow constante.

  • ptr - É um ponteiro para um bloco de memória já alocado de tamanho adequado.

Valor de retorno

Ele retorna um ponteiro para o espaço de armazenamento recém-alocado.

Exceções

Se não conseguir alocar armazenamento, ele lança bad_alloc.

Corridas de dados

Ele modifica o armazenamento referenciado pelo valor retornado.

Exemplo

No exemplo abaixo explica sobre o novo 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;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

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