Nouvelle bibliothèque C ++ - opérateur new []

La description

Il alloue un espace de stockage pour la baie.

Déclaration

Voici la déclaration de l'opérateur 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)

Paramètres

  • size - Il contient la taille en octets du bloc de mémoire demandé.

  • nothrow_value - Il contient le jet constant.

  • ptr - C'est un pointeur vers un bloc de mémoire déjà alloué de la taille appropriée.

Valeur de retour

Il renvoie un pointeur vers l'espace de stockage nouvellement alloué.

Des exceptions

S'il ne parvient pas à allouer le stockage, il lève bad_alloc.

Courses de données

Il modifie le stockage référencé par la valeur retournée.

Exemple

Dans l'exemple ci-dessous, explique le nouvel opérateur.

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

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

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