operator new (CRT)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Asigna 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

count
El tamaño de la asignación.

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

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

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

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 nonthrowing, forma de ubicació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 operator new.

Puede configurar si el operador 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 nuevo en la biblioteca estándar de C++.

RutinaEncabezado necesario
new<new.h>

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

Todas las versiones de las bibliotecas en tiempo de ejecución de C.

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

// crt_new1.cpp  
#include <stdio.h>  
int main() {  
   int * i = new int(6);  
   printf("%d\n", *i);  
   delete i;  
}  

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

// crt_new2.cpp  
#include <stdio.h>  
#include <new.h>  
int main() {  
   int * i = new int(12);  
   printf("*i = %d\n", *i);  
   // initialize existing memory (i) with, in this case, int(7)  
   int * j = new(i) int(7);   // placement new  
   printf("*j = %d\n", *j);  
   printf("*i = %d\n", *i);  
   delete i;   // or, could have deleted j  
}  

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

// crt_new3.cpp  
#include <stdio.h>  
#include <new.h>  
int main() {  
   // allocates memory, initialize (8) and if call fails, new returns null  
   int * k = new(std::nothrow) int(8);   // placement new  
   printf("%d\n", *k);  
   delete k;  
}  

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

Asignación de memoria

Mostrar: