Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

operator new[] (<new>)

La función de asignación llama una nueva expresión para asignar el almacenamiento para una matriz de objetos.

void *operator new[](
   std::size_t _Count
)
   throw(std::bad_alloc);
void *operator new[](
   std::size_t _Count,
   const std::nothrow_t&
) throw( );
void *operator new[](
   std::size_t _Count, 
   void* _Ptr
) throw( );

_Count

El número de bytes de almacenamiento que se asignará para el objeto array.

_Ptr

El puntero que se devolverá.

Un puntero a la dirección de bytes más baja del almacenamiento asignado recientemente. O _Ptr.

La primera función se llama por una expresión de new[] para asignar los bytes de _Count de almacenamiento alineados convenientemente para representar cualquier objeto de matriz de ese tamaño o menor. El programa puede definir una función con esta firma de la función que reemplace la versión predeterminada definida por la biblioteca estándar de C++. El comportamiento necesario es igual que para operador nuevo(size_t). El comportamiento predeterminado es devolver operator new(_Count).

La segunda función se llama por una expresión de new[] de posición para asignar los bytes de _Count de almacenamiento alineados convenientemente para representar cualquier objeto de matriz de ese tamaño. El programa puede definir una función con esta firma de la función que reemplace la versión predeterminada definida por la biblioteca estándar de C++. El comportamiento predeterminado es devolver operador ? new(_Count) si esa función correctamente. De lo contrario, devuelve un puntero NULL.

La tercera función se llama por una expresión de new[] de la posición, el formulario new (args) T[f]. Aquí, args constan de un solo puntero de objeto. La función devuelve _Ptr.

El almacenamiento libre asignado por operator new[], llamada operador delete [].

Para obtener información sobre el comportamiento que produce o nonthrowing de nuevo, vea Los operadores new y delete.

// new_op_alloc.cpp
// compile with: /EHsc
#include <new>
#include <iostream>

using namespace std;

class MyClass {
public:
   MyClass() {
      cout << "Construction MyClass." << this << endl;
   };

   ~MyClass() {
      imember = 0; cout << "Destructing MyClass." << this << endl;
      };
   int imember;
};

int main() {
   // The first form of new delete
   MyClass* fPtr = new MyClass[2];
   delete[ ] fPtr;

   // The second form of new delete
   char x[2 * sizeof( MyClass ) + sizeof(int)];
   
   MyClass* fPtr2 = new( &x[0] ) MyClass[2];
   fPtr2[1].~MyClass();
   fPtr2[0].~MyClass();
   cout << "The address of x[0] is : " << ( void* )&x[0] << endl;

   // The third form of new delete
   MyClass* fPtr3 = new( nothrow ) MyClass[2];
   delete[ ] fPtr3;
}

Construction MyClass.00311AEC
Construction MyClass.00311AF0
Destructing MyClass.00311AF0
Destructing MyClass.00311AEC
Construction MyClass.0012FED4
Construction MyClass.0012FED8
Destructing MyClass.0012FED8
Destructing MyClass.0012FED4
The address of x[0] is : 0012FED0
Construction MyClass.00311AEC
Construction MyClass.00311AF0
Destructing MyClass.00311AF0
Destructing MyClass.00311AEC

Encabezado: <nuevo>

Espacio de nombres: std

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft