operator new (CRT)
Allouez un 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 vectoriels, par opposition à le nouveau formulaire scalaire (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 la forme nonthrowing de positionnement.
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 l'opérateur nouveau.
Vous pouvez configurer si le retour d' operator new[] 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 montre comment utiliser le vecteur, formulaire de nonplacement d' 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;
}
L'exemple suivant montre comment utiliser le vecteur, forme de placement d' 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
}
L'exemple suivant montre comment utiliser le vecteur, positionnement, formulaire de sans lever d' 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;
}