Maison > développement back-end > C++ > Quelle est la différence entre le « nouvel opérateur » et le « nouvel opérateur » en C ?

Quelle est la différence entre le « nouvel opérateur » et le « nouvel opérateur » en C ?

Barbara Streisand
Libérer: 2024-12-11 00:16:08
original
504 Les gens l'ont consulté

What's the Difference Between `operator new` and the `new` Operator in C  ?

Nouveau opérateur vs nouvel opérateur : une plongée plus approfondie

Bien que souvent utilisés de manière interchangeable, « nouvel opérateur » et « nouvel opérateur » possèdent des rôles distincts en gestion de la mémoire C.

Opérateur Nouveau

Operator new est une fonction qui alloue de la mémoire brute à partir du magasin gratuit. Il est de bas niveau et conceptuellement similaire à malloc(). Cependant, il est généralement utilisé directement dans des conteneurs personnalisés ou pour des scénarios spécifiques. L'opérateur new peut être appelé explicitement comme :

char *x = static_cast<char *>(operator new(100));
Copier après la connexion

De plus, l'opérateur new peut être surchargé globalement ou pour des classes individuelles, avec la signature :

void *operator new(size_t);
Copier après la connexion

Nouvel opérateur

Le nouvel opérateur, en revanche, est généralement utilisé pour créer des objets sur la boutique gratuite. Contrairement à l'opérateur new, il n'alloue pas simplement de la mémoire ; il alloue de la mémoire et appelle le constructeur de classe. Cela crée un objet entièrement initialisé en mémoire, y compris tous les objets incorporés ou hérités des classes de base.

my_class *x = new my_class(0);
Copier après la connexion

Différence clé

La différence fondamentale entre l'opérateur new et le nouvel opérateur est que l'opérateur new alloue de la mémoire brute, tandis que le nouvel opérateur non seulement alloue de la mémoire mais initialise également l'objet à cet emplacement. L'opérateur new s'appuie sur l'opérateur new pour l'allocation de mémoire mais gère automatiquement l'initialisation de l'objet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal