Fahami bahawa mengurus penunjuk pintar secara manual boleh memberikan kawalan yang lebih halus ke atas pengurusan memori: Dua jenis penunjuk pintar ditakrifkan: penunjuk dikongsi dan penunjuk unik. Buat penunjuk pintar secara manual dengan menentukan penunjuk. Gunakan kaedah reset() untuk memusnahkan penunjuk pintar. Contoh praktikal menunjukkan penggunaan penunjuk dikongsi dan petunjuk unik. Menguruskan penunjuk pintar secara manual boleh mengoptimumkan prestasi dan mengelakkan kebocoran memori.
Penunjuk pintar menyediakan pengaturcara C++ cara yang mudah untuk mengurus memori yang diperuntukkan secara automatik secara automatik, namun, mengurus penunjuk pintar secara manual boleh memberikan kawalan dan pengoptimuman yang lebih berbutir.
Terdapat dua jenis penunjuk pintar utama dalam C++:
Untuk mencipta penunjuk pintar secara manual, gunakan sintaks berikut:
shared_ptr<T> shared_ptr(T* ptr); unique_ptr<T> unique_ptr(T* ptr);
Untuk memusnahkan penunjuk pintar, gunakan kaedah reset()
:
shared_ptr<T>::reset(); unique_ptr<T>::reset();
#include <memory> class MyClass { public: MyClass() { std::cout << "Constructor called" << std::endl; } ~MyClass() { std::cout << "Destructor called" << std::endl; } }; int main() { // 使用 shared_ptr { auto sharedPtr = std::make_shared<MyClass>(); std::cout << "Shared pointer count: " << sharedPtr.use_count() << std::endl; sharedPtr.reset(); std::cout << "Shared pointer count: " << sharedPtr.use_count() << std::endl; } // 使用 unique_ptr { auto uniquePtr = std::make_unique<MyClass>(); std::cout << "Unique pointer count: " << uniquePtr.get() << std::endl; uniquePtr.reset(); std::cout << "Unique pointer count: " << uniquePtr.get() << std::endl; } return 0; }
Constructor called Shared pointer count: 1 Destructor called Shared pointer count: 0 Constructor called Unique pointer count: 0x119c580 Destructor called Unique pointer count: 0x0
Atas ialah kandungan terperinci Bagaimana untuk mengurus penunjuk pintar secara manual dalam C++ untuk kawalan yang lebih tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!