Rumah > Artikel > pembangunan bahagian belakang > Petunjuk pintar C++: Evolusi penunjuk, penyelesaian yang baik untuk masalah ingatan
Petunjuk pintar ialah alat dalam C++ yang menyelesaikan masalah pengurusan memori dengan menguruskan pelepasan memori secara automatik. Jenis penunjuk pintar yang biasa digunakan ialah: unique_ptr: pemilikan eksklusif, melepaskan objek runcing apabila dimusnahkan. shared_ptr: Pemilikan dikongsi, pengiraan rujukan menjejaki bilangan penunjuk dan objek dilepaskan apabila penunjuk terakhir dimusnahkan. weak_ptr: Rujukan yang lemah tidak meningkatkan kitaran hayat objek dan hanya boleh digunakan dalam kombinasi dengan shared_ptr.
C++ Penunjuk Pintar: Evolusi Penunjuk, Penyelesaian Baik untuk Masalah Ingatan
Penunjuk Pintar ialah alat berkuasa dalam C++ yang membantu menyelesaikan masalah seperti kebocoran memori dan penunjuk liar dengan menguruskan pelepasan memori secara automatik. Berbanding dengan petunjuk tradisional, penunjuk pintar adalah lebih selamat dan lebih cekap, membolehkan pengaturcara menumpukan pada menulis logik perniagaan tanpa perlu risau tentang butiran pengurusan memori yang membosankan.
unique_ptr
shared_ptr
weak_ptr
Andaikan kita mempunyai kelas Orang
, yang mewakili seseorang. Matlamat kami adalah untuk mencipta vektor yang menyimpan objek Orang
dan memastikan bahawa memori dilepaskan secara automatik apabila vektor keluar dari skop. Person
类,它表示一个人。我们的目标是创建一个存储 Person
对象的向量,并确保当向量超出了作用域时,内存会被自动释放。
#include <iostream> #include <vector> #include <memory> class Person { public: Person(const std::string& name) : name(name) {} ~Person() { std::cout << "Destructor called for " << name << std::endl; } private: std::string name; }; int main() { std::vector<std::shared_ptr<Person>> people; // 添加几个 Person 对象 people.push_back(std::make_shared<Person>("John")); people.push_back(std::make_shared<Person>("Mary")); people.push_back(std::make_shared<Person>("Bob")); // 遍历并打印名称 for (const auto& person : people) { std::cout << person->name << std::endl; } return 0; }
输出:
John Mary Bob Destructor called for John Destructor called for Mary Destructor called for Bob
在示例中,我们使用 std::shared_ptr8abf60ac54173a2785e603c7a1f95b4e
来存储 Person
对象的指针。当 people
向量超出作用域销毁时,智能指针也会随之销毁。这将自动释放 Person
rrreee
std::shared_ptr8abf60ac54173a2785e603c7a1f95b4e
untuk menyimpan penunjuk objek Person
. Apabila vektor orang
dimusnahkan di luar skop, penunjuk pintar juga dimusnahkan. Ini secara automatik akan melepaskan memori yang diduduki oleh objek Orang
dan mengelakkan kebocoran memori. 🎜Atas ialah kandungan terperinci Petunjuk pintar C++: Evolusi penunjuk, penyelesaian yang baik untuk masalah ingatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!