Compartir a través de


operador new (CRT)

Asigne el bloque de memoria de montón

void *__cdecl operator new[](
   size_t count
);
void *__cdecl operator new[] (
   size_t count, 
   void * object
) throw();
void *__cdecl operator new[] (
   size_t count, 
   const std::nothrow_t&
) throw();

Parámetros

  • recuento
    El tamaño de asignación.

  • objeto
    Un puntero a un bloque de memoria en el que el objeto se creará.

Valor devuelto

Un puntero a la dirección de byte inferior de almacenamiento recién asignado.

Comentarios

Este formulario de operator new se conoce como vector nuevo, en contraposición al nuevo formulario escalar (operador nuevo).

El primer formulario de este operador se conoce como el formulario de nonplacement.El segundo formato de este operador se conoce como el formato de la posición y el tercer formulario de este operador es el formulario nonthrowing de posición.

El primer formulario de operador está definido por el compilador y no requiere new.h estar incluido en el programa.

operador delete [] libera memoria asignada con el operador new.

Puede configurar si operator new[] devuelve null o produce una excepción en el error.Vea Los operadores new y delete para obtener más información.

A excepción de comportamiento que produce o ninguno-que produce, CRT operator new se comporta como operador new [] en la biblioteca estándar de C++.

Requisitos

rutina

Encabezado necesario

new[]

<new.h>

Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.

bibliotecas

todas las versiones de Bibliotecas en tiempo de ejecución de C.

Ejemplo

A continuación se muestra cómo utilizar el vector, formulario de nonplacement de operator new.

// crt_new4.cpp
#include <stdio.h>
int main() {
   int * k = new int[10];
   k[0] = 21;
   printf("%d\n", k[0]);
   delete [] k;
}

A continuación se muestra cómo utilizar el vector, forma de ubicación de operator new.

// crt_new5.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * i = new int[10];
   i[0] = 21;
   printf("%d\n", i[0]);
   // initialize existing memory (i) with, in this case, int[[10]
   int * j = new(i) int[10];   // placement vector new
   printf("%d\n", j[0]);
   j[0] = 22;
   printf("%d\n", i[0]);
   delete [] i;   // or, could have deleted [] j 
}

A continuación se muestra cómo utilizar el vector, posición, formulario de ninguno-tiro de operator new.

// crt_new6.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * k = new(std::nothrow) int[10];
   k[0] = 21;
   printf("%d\n", k[0]);
   delete [] k;
}

Vea también

Referencia

Asignación de memoria