智慧指標是 C 中的工具,透過自動管理記憶體釋放來解決記憶體管理問題。常用的智慧型指標類型有:unique_ptr:獨佔所有權,銷毀時釋放指向的物件。 shared_ptr:共享所有權,引用計數追蹤指標數量,最後一個指標銷毀時釋放物件。 weak_ptr:弱引用,不會增加物件生命週期,只能與 shared_ptr 結合使用。
C 智慧指標:指標的演化,解決記憶體問題的良藥
智慧指標是C 中強大的工具,它透過自動管理記憶體釋放來幫助解決記憶體洩漏和野指標等問題。與傳統指標相比,智慧指標更加安全和高效,讓程式設計師可以專注於編寫業務邏輯,而無需擔心記憶體管理的繁瑣細節。
unique_ptr
shared_ptr
weak_ptr
假設我們有一個 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_ptr<Person>
來儲存 Person
物件的指標。當 people
向量超出作用域銷毀時,智慧指標也會隨之銷毀。這將自動釋放 Person
物件佔用的內存,防止記憶體洩漏。
以上是C++ 智慧指標:指標的進化,解決記憶體問題的良藥的詳細內容。更多資訊請關注PHP中文網其他相關文章!