new delete operators c with examples
Découvrez tout sur les opérateurs New / Delete en C ++.
Nous avons déjà vu des variables et des tableaux statiques en C ++ dans nos précédents tutoriels.
En ce qui concerne la mémoire allouée aux variables et aux tableaux, c'est la mémoire statique qui est allouée par le compilateur en fonction du type de données (dans le cas des variables) et des dimensions fournies pour les tableaux.
La mémoire allouée par le compilateur est allouée sur la pile. Mais dans la plupart des cas, nous ne sommes peut-être pas conscients de la quantité exacte de mémoire dont nous avons besoin.
=> Lisez la série de formations populaires C ++ ici.
Ce que nous ferions, c'est allouer et désallouer autant de mémoire que nous le voulons et aussi quand et quand nous le voulons. Cela se fait en allouant dynamiquement la mémoire. Contrairement à l'allocation statique, la mémoire allouée dynamiquement est allouée sur le tas.
L'allocation de mémoire dynamique est utile car nous pouvons allouer une mémoire de taille variable que nous ne pouvons pas obtenir avec la mémoire allouée au compilateur. Nous avons la possibilité d’allouer de la mémoire lorsque nous en avons besoin et de la désallouer lorsque nous n’en avons pas besoin.
Mais en dehors de ces utilisations, nous devons également garder à l’esprit qu’en cas de mémoire allouée dynamiquement, il incombe à l’utilisateur de désallouer la mémoire. Si nous oublions de désallouer la mémoire, cela provoque une fuite de mémoire dans laquelle la mémoire n'est pas désallouée jusqu'à la fin du programme.
Cela peut entraîner une utilisation excessive de la mémoire et donc entraîner de sérieux goulots d'étranglement.
Ce que vous apprendrez:
- Allocation de mémoire dynamique
- Le «nouvel» opérateur
- Utilisation du «nouvel» opérateur avec des tableaux
- L'opérateur de suppression
- Conclusion
- lecture recommandée
Allocation de mémoire dynamique
Le langage C utilise les fonctions «malloc», «calloc» et «realloc» pour allouer dynamiquement de la mémoire. Pour désallouer la mémoire allouée dynamiquement avec ces fonctions, il utilise un appel de fonction «libre». Le langage C ++ prend également en charge ces fonctions du langage C pour allouer / désallouer de la mémoire.
En dehors de ces fonctions, C ++ introduit deux nouveaux opérateurs qui sont plus efficaces pour gérer la mémoire dynamique. Il s’agit d’un «nouvel» opérateur pour l’allocation de mémoire et d’un opérateur de «suppression» pour la désallocation de mémoire.
Dans ce didacticiel, nous en apprendrons davantage sur les opérateurs de création et de suppression en langage C ++.
Le «nouvel» opérateur
L'opérateur «new» alloue de la mémoire pour une variable ou toute autre entité sur un tas.
La syntaxe générale de l'opérateur «nouveau» est:
pointer_variable_of_data_type = new data type;
Le type de données mentionné ci-dessus peut être n'importe quel type de données valide pris en charge par C ++. Il peut s'agir d'un type de données intégré ou de tout type de données défini par l'utilisateur, y compris des classes et des structures.
Par exemple,
Questions d'entretien .net C #
int *ptr = NULL; ptr = new int();
Dans l'exemple ci-dessus, nous avons déclaré une variable de pointeur «ptr» sur un entier et l'avons initialisée à null. Ensuite, en utilisant l'opérateur «new», nous allouons de la mémoire à la variable «ptr». Si de la mémoire est disponible sur le tas, la deuxième instruction réussira. Si aucune mémoire n'est disponible, alors le nouvel opérateur lève l'exception «std :: bad_alloc».
Il est donc préférable de vérifier si la mémoire est allouée avec succès par le nouvel opérateur avant d'utiliser cette variable ou entité dans le programme.
Nous pouvons également initialiser des variables en utilisant le nouvel opérateur comme suit:
ptr = new int(10);
Dans l'exemple ci-dessus, la variable de pointeur «ptr» est la mémoire allouée à l'aide du nouvel opérateur et en même temps, la valeur assignée est 10. C'est encore une autre façon d'initialiser en C ++.
Utilisation du «nouvel» opérateur avec des tableaux
Encore une autre utilisation de l'opérateur «new» est l'allocation de mémoire pour les tableaux. Ici, nous spécifions le nombre d'éléments à allouer pour le tableau.
Un exemple d'allocation d'éléments de tableau à l'aide de l'opérateur «new» est donné ci-dessous:
int* myarray = NULL; myarray = new int(10);
Ici, un nouvel opérateur alloue 10 éléments continus de type integer à la variable pointeur myarray et renvoie le pointeur vers le premier élément de myarray.
L'opérateur de suppression
La mémoire allouée dynamiquement à l'aide de l'opérateur new doit être libérée explicitement par le programmeur. Pour cela, nous disposons de l'opérateur «supprimer».
comment exécuter des fichiers .jar sur Windows 10
La syntaxe générale de l'opérateur de suppression est:
delete pointer_variable;
Nous pouvons donc libérer la mémoire allouée à la variable ptr ci-dessus comme suit:
delete ptr;
Cette instruction libère la mémoire allouée à la variable «ptr» dans le pool de mémoire.
Nous pouvons également utiliser l'opérateur de suppression pour libérer la mémoire allouée aux tableaux.
Par exemple,la mémoire allouée au tableau myarray ci-dessus peut être libérée comme suit:
delete() myarray;
Notez l'opérateur d'indice utilisé avec l'opérateur de suppression. C'est parce que, comme nous avons alloué le tableau d'éléments, nous devons libérer tous les emplacements.
Au lieu de cela, si nous avions utilisé l'instruction,
delete myarray;
Nous savons que myarray pointe vers le premier élément du tableau, donc l'instruction ci-dessus ne supprimera que le premier élément du tableau. L'utilisation de l'indice «()» indique que la variable dont la mémoire est libérée est un tableau et que toute la mémoire allouée doit être libérée.
L'exemple de programmation ci-dessous montre l'utilisation des opérateurs new et delete en C ++.
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< Production:
mémoire allouée avec succès
* ptr = 10
* var = 12
valeurs myarray: 1 2 3 4 5 6 7 8 9 10
La capture d'écran pour le même est donnée ci-dessous.

Dans l'exemple de code ci-dessus, nous avons démontré l'utilisation des opérateurs new et delete. Nous avons utilisé l'opérateur «new» pour allouer de la mémoire pour une variable, des tableaux et pour initialiser une autre variable avec une valeur. Ensuite, nous supprimons ces entités à l'aide de l'opérateur de suppression.
Conclusion
Il s'agit des opérateurs new et delete de C ++ en ce qui concerne les types de données standard. Nous pouvons également utiliser des opérateurs new et delete pour les types de données définis par l'utilisateur en tant que classes et structures.
Nous en apprendrons plus sur l'utilisation de ces opérateurs pour créer des objets lorsque nous apprendrons la programmation orientée objet à l'aide de C ++.
=> Jetez un œil au guide du débutant C ++ ici.
lecture recommandée
- Exemples d'opérateurs arithmétiques et booléens de script shell Unix
- Mise à jour et suppression de documents MongoDB avec des exemples
- Opérateurs, types et exemples C ++
- Opérateurs Python
- Tutoriel Python DateTime avec des exemples
- Commande Cut sous Unix avec des exemples
- Tri à bulles en C ++ avec des exemples
- Syntaxe des commandes Unix Cat, options avec exemples