Maison  >  Article  >  développement back-end  >  La différence entre new et malloc en C++

La différence entre new et malloc en C++

下次还敢
下次还敢original
2024-05-01 12:09:18321parcourir

La différence entre new et malloc : new est un opérateur C++ de type sécurisé, utilisé pour créer des objets d'un type spécifié et renvoyer un pointeur vers l'objet. malloc est une fonction de bibliothèque standard C qui alloue un bloc de mémoire non typé et renvoie un pointeur void* vers le bloc de mémoire. new appelle les constructeurs et les destructeurs, ce qui n'est pas le cas de malloc. new gère la mémoire par le runtime C++, tandis que malloc nécessite une gestion manuelle.

La différence entre new et malloc en C++

La différence entre new et malloc en C++

En C++, new et malloc sont toutes deux des fonctions utilisées pour l'allocation dynamique de mémoire. Cependant, il existe quelques différences clés entre eux :

  1. Syntaxe et types de retour :
  • new est un opérateur C++ qui crée un nouvel objet d'un type spécifié et renvoie un pointeur vers cet objet.
  • malloc est une fonction de bibliothèque standard C qui alloue un bloc de mémoire d'une taille spécifiée et renvoie un pointeur void* vers le bloc de mémoire.
  1. Sécurité des types :
  • new est de type sécurisé car il vérifie si les types correspondent lors de l'allocation de mémoire. Par exemple, int* p = new int; 会分配一个整数指针,而 p = malloc(sizeof(int)); n'alloue qu'un bloc de mémoire sans vérification de type.
  • malloc n'est pas de type sécurisé, il alloue uniquement de la mémoire et l'appelant est responsable de la gestion du type de l'objet.
  1. Construction et destruction :
  • new appellera d'abord le constructeur de l'objet puis renverra le pointeur de l'objet. Lorsqu'un objet sort du champ d'application, son destructeur est automatiquement appelé.
  • malloc n'appellera pas le constructeur ou le destructeur. Ces fonctions doivent être gérées manuellement par l'appelant.
  1. Gestion de la mémoire :
  • new La gestion de la mémoire est gérée par le runtime C++. Il maintient un tas interne en arrière-plan et est responsable de l'allocation et de la libération de la mémoire.
  • malloc nécessite une gestion manuelle de la mémoire. L'appelant est responsable de l'allocation, de la libération et de la réallocation de la mémoire. Une mauvaise gestion de la mémoire peut provoquer des fuites de mémoire ou des erreurs de segmentation.

Résumé :

  • new est un opérateur de type sécurisé en C++ pour créer de nouveaux objets.
  • malloc est une fonction de bibliothèque standard C utilisée pour allouer de la mémoire brute non typée.
  • Pour l'allocation dynamique de mémoire, new est généralement un choix plus sûr et préférable dans les programmes C++.

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!

Déclaration:
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