Différence entre Malloc et New Différence entre

Anonim

Malloc contre New

One des questions d'entrevue les plus courantes dans l'embauche d'un programmeur informatique est pour le demandeur / programmeur informatique pour expliquer les différences entre malloc et nouveau. Les deux malloc et nouveau existent dans le domaine du langage informatique et sont souvent utilisés par les programmeurs informatiques pour les allocations de mémoire dynamique.

Les différences fondamentales entre les deux sont que malloc existe dans le langage C tandis que new est une caractéristique spécifique du langage C ++. Malloc est également une fonction (qui, pour les programmeurs, nécessite un certain temps d'exécution) tandis que new est un programme opérateur (qui réduit le temps d'exécution). C'est un avantage de l'opérateur nouveau parce que les programmeurs qui font de la programmation en temps réel ont besoin de choisir la méthode la plus rapide à utiliser.

L'opérateur new est de type safe contrairement à la fonction malloc.

Fonction malloc est une fonction de bibliothèque pour le langage C. Tout ce qu'il fait est d'allouer de la mémoire et de lui renvoyer un pointeur. D'un autre côté, operator new est une construction de niveau langage, et son travail consiste à instancier un objet en allouant de la mémoire et en appelant les constructeurs appropriés. Une autre différence de la fonction malloc de l'opérateur new est que malloc nécessite le typecasting pendant la déclaration alors que le précédent ne le fait pas. De même, la fonction malloc utilise le mot "libre" pour effacer la mémoire tandis que "delete" est utilisé dans l'opérateur new dans le même but.

Les deux ont aussi différentes façons de gérer l'échec et l'épuisement de la mémoire. Si la fonction malloc échoue, elle retourne avec un pointeur NULL. L'opérateur new ne renvoie jamais de pointeur NULL mais indique l'échec en lançant une exception à la place. Ceci est un avantage pour l'opérateur car le programmeur n'a pas besoin de vérifier le pointeur retourné chaque fois qu'il appelle un nouveau ou le programmeur manque une telle exception.

Fonction malloc ne construit pas un objet (appelé constructeur de l'objet) mais l'opérateur new le fait. Un autre avantage de la nouveauté est que l'opérateur peut être surchargé alors que la fonction malloc ne le peut pas. L'opérateur new requiert un nombre spécifique d'objets à allouer tandis que la fonction malloc nécessite de spécifier le nombre total d'octets à allouer.

La mémoire peut également être redimensionnée ou réallouée en utilisant la fonction malloc en utilisant realloc. Cependant, l'opérateur new ne peut pas exécuter cette fonction et la considère comme l'un des principaux inconvénients de l'opérateur. Un autre avantage de la fonction malloc par rapport à l'opérateur new est que malloc peut étendre la quantité de mémoire rapidement. Ceci utilise toujours malloc et realloc. En faisant la même situation en langage C ++, le programmeur doit créer un nouveau morceau de mémoire avec l'opérateur new. La nouvelle mémoire doit avoir une taille modifiée et sera copiée sur les données du tampon d'origine.Le tampon original doit être supprimé après la copie. Cela peut être un processus lent pour un programmeur.

L'opérateur new a un effet de levier sur la fonction malloc en retournant le type de données exact pendant que la fonction renvoie void *. La fonction malloc ne peut pas non plus être surchargée par rapport à l'opérateur new dans lequel une surcharge est possible. Une autre caractéristique de l'opérateur new est qu'il y a moins de risques de faire des erreurs avec l'opérateur par rapport à la fonction malloc. Ceci est considéré comme un plus pour les programmeurs, surtout s'ils écrivent de nombreux codes ou travaillent sur un code dans un délai serré. La fonction malloc et free peuvent être utilisées en C ++, mais ne peuvent pas être utilisées directement. Il est conseillé d'utiliser new et delete à la place.

Résumé:

1. Malloc est une fonction alors que new est un opérateur.

2. New est une caractéristique spécifique du langage C ++ tandis que malloc est utilisé dans le langage C.

3. L'opérateur new suit avec "delete" tandis que la fonction malloc va avec "free". "

4. La fonction malloc est une fonction de bibliothèque pour le langage C tandis que l'opérateur new est une construction de niveau langage à partir du langage C ++.