Différence entre Malloc et New

Malloc vs Nouveau
L’une des questions d’entrevue les plus courantes lors de l’embauche d’un programmeur est que le candidat / programmeur explique les différences entre malloc et new. Malloc et new existent tous deux dans le domaine du langage informatique et sont souvent utilisés par les programmeurs pour l'allocation dynamique de mémoire.

La différence fondamentale entre les deux réside dans le fait que malloc existe dans le langage C, tandis que new est une fonctionnalité spécifique du langage C ++. Malloc est également une fonction (qui, pour les programmeurs, nécessite un peu de temps d'exécution) alors que new est un programme opérateur (qui réduit le temps d'exécution). Ceci est un avantage de l'opérateur nouveau car les programmeurs programmant en temps réel ont besoin de choisir la méthode la plus rapide à utiliser.

Operator new est compatible avec le type, contrairement à la fonction malloc.
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 retourner un pointeur. D'autre part, l'opérateur 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 entre la fonction malloc et l'opérateur new réside dans le fait que malloc requiert une conversion de type pendant la déclaration, contrairement à l'ancien. De plus, la fonction malloc utilise le mot «libre» pour effacer la mémoire, tandis que «supprimer» est utilisé dans l'opérateur new dans le même but..

Les deux ont également des manières différentes de faire face aux échecs et à l’épuisement de la mémoire. Si la fonction malloc échoue, elle retourne avec un pointeur NULL. L'opérateur new ne retourne jamais un pointeur NULL mais indique l'échec en lançant une exception. Ceci est un avantage pour l'opérateur new car le programmeur informatique n'a pas à vérifier le pointeur renvoyé à chaque fois qu'il appelle new et le programmeur informatique ne manquera pas une telle exception..

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

La mémoire peut également être redimensionnée ou réaffectée à l'aide de la fonction malloc à l'aide de 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 nouveau est que malloc peut étendre rapidement la quantité de mémoire. Ceci utilise toujours malloc et realloc. En faisant la même chose en langage C ++, le programmeur doit créer un nouveau bloc 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 d'origine doit être supprimé après la copie. Cela peut être un processus lent pour un programmeur.

L'opérateur new tire parti de la fonction malloc en renvoyant le type de données exact tandis que la fonction renvoie void *. La fonction malloc ne peut pas non plus être surchargée par rapport au nouvel opérateur 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 avantage pour les programmeurs, en particulier s'ils écrivent de nombreux codes ou travaillent sur un code dans des délais serrés. Les fonctions malloc et free peuvent être utilisées en C ++, mais elles 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. Nouveau est une caractéristique spécifique du langage C ++ alors que malloc est utilisé en langage C..

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

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