スマート ポインター: 生のポインターをカプセル化し、追加の関数を提供する C++ の特別なポインター。タイプ: std::unique_ptr: 一意の所有権。メモリはポインタの有効期限が切れた後に解放されます。 std::shared_ptr: 共有所有権。最後の参照が消えるとメモリが解放されます。 std::weak_ptr: 弱い所有権。オブジェクトの破棄を妨げず、循環参照を回避します。使用法: 通常のポインターを置き換えるスマート ポインター タイプを宣言します。実際のケース: std::shared_ptr を使用してファイル ストリームを管理し、例外が発生したかどうかに関係なくファイル ストリームを自動的に閉じます。
C++ スマート ポインター: ポインターをよりスマートにし、メモリ管理の心配を解消します
最新の C++ では、スマート ポインターは、アプリケーションの堅牢性とメモリ管理の効率を向上させる強力なツールです。メモリ管理タスクを自動化できます。これにより、開発者を潜在的なバグやメモリ リークから保護します。
スマートポインターとは何ですか?
スマート ポインターは、生のポインターをカプセル化し、自動メモリ解放、例外安全性、参照カウント管理などの追加機能を提供する C++ の特別なポインターです。
スマート ポインターの種類
C++ では一般的に使用される 3 つのスマート ポインター タイプがあります:
使用方法
スマート ポインターの使用は簡単です。以下に示すように、スマート ポインターのタイプを通常のポインターの代わりに宣言するだけです。ファイル読み取り関数を使用して、ファイルからファイルの内容を読み取ります。
// 使用 unique_ptr 管理一个 int std::unique_ptr<int> number(new int(10)); // 使用 shared_ptr 管理一个 string std::shared_ptr<std::string> text(new std::string("Hello world!"));
このコードには 2 つの主な問題があります:
ファイルを開くのに失敗した場合、例外が正しく処理されず、予期しない動作が発生する可能性があります。 ファイルを閉じるためのfile.close()
呼び出しは、例外が発生した場合でも、いかなる状況でも実行する必要があります。 スマート ポインターを使用すると、次の問題を簡単に解決できます: std::string readFile(const std::string& fileName) { std::ifstream file(fileName); // 检查文件是否打开 if (!file.is_open()) { throw std::runtime_error("无法打开文件!"); } // 读取文件内容到字符串中 std::string content; file >> content; // 关闭文件 file.close(); // 返回文件内容 return content; }
std::shared_ptr
を使用すると、例外が発生したかどうかに関係なく、ファイル ストリームが自動的に閉じられます。さらに、コードはファイルを開く失敗を安全に処理し、例外を介して呼び出し元にこれを通知するようになりました。 以上がC++ スマート ポインター: ポインターをよりスマートにし、メモリ管理の問題を解消します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。