Maison >développement back-end >C++ >Quand dois-je utiliser le « nouvel » opérateur en C ?

Quand dois-je utiliser le « nouvel » opérateur en C ?

DDD
DDDoriginal
2024-11-30 10:51:11806parcourir

When Should I Use the

Quand utiliser le « nouveau » en C ?

En tant que développeur passant de C#/Java, comprendre l'instanciation d'objet en C peut être déroutant . Cet article clarifie quand employer l'opérateur « nouveau » et quand s'en abstenir.

Utiliser « nouveau » : assurer la longévité des objets

Utilisez « nouveau » lorsque vous souhaitez qu'un objet persiste jusqu'à ce qu'il soit explicitement supprimé. Sans « nouveau », l’objet sera détruit une fois hors de portée. Considérez les exemples suivants :

void foo() {
  Point p = Point(0,0); // p is destroyed here
}

for (...) {
  Point p = Point(0,0); // p is destroyed after each iteration
}

Utilisation de "new" pour les tableaux

Les tableaux en C sont alloués sur place (c'est-à-dire sur la pile). Cependant, si vous devez créer un tableau avec une taille déterminée au moment de l'exécution, vous devez l'allouer en utilisant "nouveau".

void foo(int size) {
   Point* pointArray = new Point[size];
   ...
   delete [] pointArray;
}

Allocation sur place (sans "nouveau")

L'allocation sur place est préférable pour des raisons de performances. Cela se produit automatiquement pour les objets déclarés dans les classes.

class Foo {
  Point p; // p will be destroyed when Foo is
};

N'oubliez pas que l'allocation et la libération d'objets à l'aide de « nouveau » nécessitent plus de calculs que l'allocation sur place. Utilisez-le uniquement lorsque cela est nécessaire pour éviter des frais généraux inutiles.

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