new, opérateur (CRT)

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

Alloue un bloc de mémoire à partir du segment de mémoire.

  
      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

count
Taille de l'allocation.

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

Un pointeur vers l'adresse ayant le moins d'octets de la mémoire nouvellement allouée.

Cette forme deoperator new est reconnue comme un nouveau scalaire, à l'inverse de la forme de nouveaux vecteurs(operator new[]).

La première forme de cet opérateur est connue comme la forme de non placement. La seconde forme de cet opérateur est connu comme la forme de placement et la troisième forme de cet opérateur est la forme de placement "nonthrowing".

La première forme de l'opérateur est définie par le compilateur et ne requiert pas d'inclure new.h dans votre programme.

opérateur delete libère de la mémoire allouée à operator new.

Vous pouvez configurer si operator retourne null ou relève une exception en cas de échec. Consultez Les Opérateurs nouveau supprimer pour plus d'informations.

À l'exception des comportements throwing et no-throwing , le CRT operator new se comporte comme operator new[] dans la librairie C++ standard.

RoutineEn-tête requis
new<new.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Toutes les versions des bibliothèques Runtime C.

L'exemple suivant indique comment utiliser la frome scalaire, nonplacement de 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 la frome scalaire, placement 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  
}  

L'exemple suivant indique comment utiliser la frome scalaire, de placement, et no throw 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;  
}  

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Allocation de mémoire

Afficher: