C++ で、別のオブジェクトへのポインターを返すヘルパー クラスのメソッドがあるとします。メソッドのシグネチャと返されるオブジェクトの型を除いて、このメソッドに関する情報はありません。この場合、メモリ管理を行う方法は?
以下のこの関数としてスマートポインターを使用しようとしました:
void f() {
auto_ptr<SomeClass> p_someClass = p_Helper->getSomeclass();
p_someClass->doSomething();
}
p_someClass に割り当てられたメモリは、 f() がスコープ外になるとすぐに解放されます。しかし、getSomeclass() が新しいメモリを割り当てず、単に「シングルトン」ポインターを返す場合 (p_Helper もシングルトンである場合) はどうなるでしょうか。次に p_Helper->getSomeclass() を呼び出すと問題が発生します。
この問題を処理する通常の方法は何ですか? 特に Helper クラスに関するドキュメントがほとんどない場合は?