Les pointeurs intelligents sont des outils de gestion de la mémoire en C++. Ils améliorent la sécurité du code en libérant automatiquement les objets. Il existe trois types de pointeurs intelligents : unique_ptr (propriété exclusive), shared_ptr (propriété partagée) et faible_ptr (propriété plus faible). Utilisez des pointeurs intelligents pour libérer automatiquement les objets et éviter les fuites de mémoire : unique_ptr libère l'objet après la fin de la portée du pointeur ; shared_ptr libère l'objet lorsque le dernier pointeur est libéré. faible_ptr n'augmente pas le nombre de références et est utilisé pour observer les objets gérés par d'autres pointeurs ; .
Pointeurs intelligents C++ : améliorez la sécurité et la fiabilité du code
Les pointeurs intelligents sont des outils puissants pour gérer la mémoire en C++. En gérant automatiquement la durée de vie des objets, ils simplifient la programmation et améliorent la sécurité du code.
Types de pointeurs intelligents
La bibliothèque standard C++ fournit plusieurs types de pointeurs intelligents :
Utiliser des pointeurs intelligents
L'utilisation de pointeurs intelligents est très simple :
// 使用 unique_ptr std::unique_ptr<int> i = std::make_unique<int>(10); // 使用 shared_ptr std::shared_ptr<int> j = std::make_shared<int>(20); // 使用 weak_ptr std::weak_ptr<int> k(j);
Exemple pratique
Considérons l'exemple suivant qui démontre les avantages des pointeurs intelligents :
class Resource { public: Resource() { std::cout << "Resource acquired" << std::endl; } ~Resource() { std::cout << "Resource released" << std::endl; } }; void withoutSmartPointers() { // 创建资源但无法释放 Resource* r = new Resource(); std::cout << "Exiting function" << std::endl; } void withSmartPointers() { // 使用 unique_ptr 自动释放资源 std::unique_ptr<Resource> r = std::make_unique<Resource>(); std::cout << "Exiting function" << std::endl; } int main() { withoutSmartPointers(); std::cout << std::endl; withSmartPointers(); return 0; }
Sortie : 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!Resource acquired
Exiting function
Resource released
Resource acquired
Exiting function