Partager via


operator new (CRT)

alloue le bloc de mémoire du tas

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();

Paramètres

  • nombre
    la taille de l'allocation.

  • object
    Un pointeur vers un bloc de mémoire dans lequel l'objet est créé.

Valeur de retour

Un pointeur vers la plus basse adresse d'octets de stockage nouvellement alloué.

Notes

Ce formulaire d' operator new contraste appelé nouveau scalaire, par opposition à le nouveau forme vecteur (operator new []).

le premier formulaire de cet opérateur est appelé le formulaire de nonplacement.La deuxième forme de cet opérateur est connue sous la forme de placement et le troisième formulaire de cet opérateur est nonthrowing, forme de placement.

Le premier formulaire de l'opérateur est défini par le compilateur et ne requiert pas new.h à inclure dans votre programme.

operator delete libère la mémoire allouée avec operator new.

Vous pouvez configurer si les nouveaux retour d'opérateur retourne null ou lever une exception en cas de échec.Consultez Le nouveau les opérateurs et delete pour plus d'informations.

À l'exception de le comportement est levée ou sans se levée, le CRT operator new se comporte comme operator new dans la bibliothèque C++ standard.

Configuration requise

routine

en-tête requis

new

<new.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

bibliothèques

toutes les versions de Bibliothèques runtime C.

Exemple

L'exemple suivant indique comment utiliser l'opérateur scalaire, formulaire de nonplacement d' operator new.

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

L'exemple suivant indique comment utiliser l'opérateur scalaire, forme de placement d' 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
}

L'exemple suivant indique comment utiliser l'opérateur scalaire, positionnement, formulaire de sans lever d' 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;
}

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Allocation de mémoire