Espaces de noms
Variantes
Affichages
Actions

new expression

De cppreference.com
< cpp‎ | language

 
 
Langage C++
Sujets généraux
Contrôle de flux
Instructions conditionnelles
Instructions d'itération
Instructions de saut
Fonctions
déclaration de fonction
expression lambda
fonction générique
spécificateur inline
spécification d'exception (obsolète)
spécificateur noexcept (C++11)
Exceptions
Espaces de noms
Types
spécificateur decltype (C++11)
Qualificatifs
qualificatifs const et volatile
qualificatifs de stockage
qualificatif constexpr (C++11)
qualificatif auto (C++11)
qualificatif alignas (C++11)
Initialisation
Littéraux
Expressions
opérateurs alternatifs
Utilitaires
Types
déclaration typedef
déclaration d'alias de type (C++11)
attributs (C++11)
Jette
Original:
Casts
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
conversions implicites
conversion const_cast
conversion static_cast
conversion dynamic_cast
conversion reinterpret_cast
conversions style C et style fonction
Allocation de mémoire
opération new
Classes
Qualificatifs spécifiques aux membres de classe
Fonctions membres spéciales
Modèles
classes génériques
fonctions génériques
spécialisation de modèles
paquets de paramètres (C++11)
Divers
Assembleur
 
Initialise les objets en mémoire dynamiquement obtenu .
Original:
Initializes objects in dynamically obtained memory.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Utilisées lorsque les données doivent être allouées de façon dynamique, c'est à dire sans connaître sa taille avant la compilation .
Original:
Used where data need to be allocated dynamically, that is, without knowing its size prior the compilation.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Sommaire

[modifier] Syntaxe

:: (en option) new  type [array_n] (en option) (init_params) (en option) (1)
:: (en option) new (type ) [array_n] (en option) (init_params) (en option) (2)
:: (en option) new (placement_params)  type [array_n] (en option) (init_params) (en option) (3)
:: (en option)    new      (placement_params)     (type )     [array_n] (en option)     (init_params) (en option)     (4)
Toutes les versions renvoyer un objet de type' 'Type * .
Original:
All versions return an object of type type *.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] Explication

L'expression new alloue une zone mémoire, initialise soit seul objet ou un tableau d'objets là et renvoie un pointeur sur le premier objet construit. Comme il n'est pas possible autrement d'appeler explicitement un constructeur, l'expression est la seule façon de construire un objet dynamique .
Original:
The new expression allocates a memory area, initializes either single object, or an array of objects there and returns a pointer to the first constructed object. Since it is not otherwise possible to call explicitly call a constructor, the expression is the only way to construct an object dynamically.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Les deux premières et les deux dernières versions de l'expression ne diffèrent que syntaxiquement. Le comportement est le même .
Original:
The first two and last two versions of the expression differ only syntactically. The behavior is the same.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] D'allocation de mémoire

La mémoire est allouée par une fonction d'allocation, soit operator new ou operator new[] .
Original:
The memory is allocated by an fonction d'allocation, either operator new or operator new[].
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Les deux dernières versions de l'expression sont appelés' nouveau placement »et sont utilisés pour passer des paramètres supplémentaires (placement_params) à la fonction de répartition .
Original:
The last two versions of the expression are called placement new and are used to pass additional parameters (placement_params) to the allocation function.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Si array_n est absent, la mémoire est allouée pour un seul objet en invoquant fonction d'allocation operator new. Sinon mémoire pour un tableau d'objets array_n est attribué en appelant la fonction d'allocation operator new[]. Notez que plus size_of( type ) * array_n pourrait être imputées faute de renseignements supplémentaires codée par le compilateur (telles que la taille du tableau, puisque cette information est nécessaire afin de détruire les objets du tableau correctement) .
Original:
If array_n is absent, memory is allocated for a single object by invoking operator new allocation function. Otherwise memory for an array of array_n objects is allocated by calling operator new[] allocation function. Note, that more than size_of( type ) * array_n might be allocated because of additional information encoded by the compiler (such as the size of the array, since this information is needed in order to destruct the objects in the array properly).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Le nom de la fonction d'allocation est d'abord recherché dans la classe' portée de type local et seulement si la recherche échoue, l'espace de noms global est recherché. Si :: est présent dans l'expression new, seul espace de noms global est recherché. Le prototype de la fonction devrait ressembler à ce qui suit pour la fonction d'allocation à sélectionner:
Original:
The allocation function's name is firstly looked up in the local class type scope and only if the lookup fails, the global namespace is looked up. If :: is present in the new expression, only the global namespace is looked up. The prototype of the function should look like the following in order to the allocation function to be selected:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
void* operator new  (size_t count);
for versions 1, 2, array_n is not present
void* operator new[](size_t count);
for versions 1, 2, array_n is present
void* operator new  (size_t count/*, placement_params...*/);
for versions 3, 4 (placement new), array_n is not present
void* operator new[](size_t count/*, placement_params...*/);
for versions 3, 4 (placement new), array_n is present
count est le nombre d'octets à allouer, placement_params sont les paramètres donnés à la mise en place nouvelle expression .
Original:
count is number of bytes to allocate, placement_params are the parameters given to the placement new expression.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[modifier] Les implémentations par défaut et surcharge
Plusieurs fonctions d'allocation par défaut sont implicitement déclaré dans chaque unité de traduction. En outre, les implémentations sont implicites fournies par le compilateur par défaut, à moins que le programme a explicitement mis en œuvre. Ces fonctions sont les suivantes (voir ce produit pour plus d'informations):
Original:
Several default allocation functions are implicitly declared in each translation unit. Also, implicit implementations are provided by the compiler by default, unless the program has explicitly implemented them. These functions are as follows (see ce produit for more information):
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
void* operator new  (size_t);
(1)
void* operator new[](size_t);
(2)
void* operator new  (size_t, std::nothrow_t);
(3)
void* operator new[](size_t, std::nothrow_t);
(4)
void* operator new  (size_t, void* ptr);
(5)
void* operator new[](size_t, void* ptr);
(6)
1-2)
alloue nombre d'octets demandé ou lève std::bad_alloc en cas d'échec
Original:
allocates requested number of bytes or throws std::bad_alloc on failure
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
3-4)
alloue demandé nombre d'octets ou NULL retour en cas d'échec
Original:
allocates requested number of bytes or returns NULL on failure
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
5-6)
ptr rendements. Cela permet de construire un objet fourni par l'utilisateur dans la zone de mémoire. Le programme ne doit pas définir des implémentations explicites pour ces fonctions .
Original:
returns ptr. This allows to construct an object in user-supplied memory area. The program must not define explicit implementations for these functions.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] Initialisation des objets

Si array_n est absent, seul objet est initialisé dans la zone de mémoire acquise, en passant init_params en tant que paramètres au constructeur ou l'invocation de constructeur par défaut si elles ne sont pas présents .
Original:
If array_n is absent, single object is initialized in the acquired memory area, passing init_params as parameters to the constructor or invoking default constructor if they are not present.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Si array_n est présent, un tableau d'objets array_n est initialisé, en passant init_params en tant que paramètres au constructeur de chaque objet ou l'invocation de constructeur par défaut si init_params ne sont pas présents .
Original:
If array_n is present, an array of array_n objects is initialized, passing init_params as parameters to the constructor of each object or invoking default constructor if init_params are not present.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] Mots-clés

new