C++におけるスマートポインタの使い方は何ですか?

C++でスマートポインタを使用するのは、動的に割り当てられたメモリを管理し、メモリリークやダングリングポインタの問題を回避するためです。C++11では、std::shared_ptrとstd::unique_ptrという2種類のスマートポインタが導入されており、これらの使用法は次の通りです。

  1. shared_ptr:複数のshared_ptrが同じオブジェクトを指すことができ、それは参照カウントを管理し、参照カウントが0になると、オブジェクトは自動的に破棄されます。
#include <memory>

int main() {
    std::shared_ptr<int> ptr1 = std::make_shared<int>(10);
    std::shared_ptr<int> ptr2 = ptr1;

    // 使用智能指针访问对象
    std::cout << *ptr1 << std::endl;
    std::cout << *ptr2 << std::endl;
}
  1. unique_ptrは所有権を独占しており、同じオブジェクトを指す複数のunique_ptrを持つことはできません。unique_ptrが破棄されると、オブジェクトも破棄されます。
#include <memory>

int main() {
    std::unique_ptr<int> ptr1 = std::make_unique<int>(10);
    //std::unique_ptr<int> ptr2 = ptr1; // 编译错误,unique_ptr不支持拷贝

    // 使用智能指针访问对象
    std::cout << *ptr1 << std::endl;
}

shared_ptrとunique_ptrに加えて、C++11では循環参照の問題を解決するためにweak_ptrが導入されました。スマートポインタの使用は、メモリ管理を大幅に簡素化し、コードの保守性と安全性を向上させることができます。

コメントを残す 0

Your email address will not be published. Required fields are marked *