スマート ポインタは、メモリ解放を自動的に管理することでメモリ管理の問題を解決する C++ のツールです。一般的に使用されるスマート ポインターのタイプは次のとおりです。 unique_ptr: 排他的所有権。破棄されたときにポイントされたオブジェクトを解放します。 shared_ptr: 共有所有権、参照カウントによりポインターの数が追跡され、最後のポインターが破棄されるとオブジェクトが解放されます。 weak_ptr: 弱い参照はオブジェクトのライフサイクルを増加させず、shared_ptr と組み合わせてのみ使用できます。
C++ スマート ポインタ: ポインタの進化、メモリ問題の優れた解決策
スマート ポインタは、メモリの解放を自動的に管理することでメモリ リークやワイルド ポインタなどの問題の解決に役立つ C++ の強力なツールです。従来のポインターと比較して、スマート ポインターはより安全で効率的であるため、プログラマーはメモリ管理の面倒な詳細を気にせずにビジネス ロジックの作成に集中できます。
unique_ptr
shared_ptr
weak_ptr
人を表す person
クラスがあるとします。私たちの目標は、person
オブジェクトを格納するベクターを作成し、ベクターがスコープ外になったときにメモリが自動的に解放されるようにすることです。 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
rrreee
std::shared_ptr<person>
を使用して、person
オブジェクトのポインターを保存します。 people
ベクターがスコープ外で破棄されると、スマート ポインターも破棄されます。これにより、person
オブジェクトによって占有されていたメモリが自動的に解放され、メモリ リークが防止されます。 🎜以上がC++ スマート ポインター: ポインターの進化、メモリ問題の優れた解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。