私が使用する必要があるフレームワークは、デバッグの補助としてミューテックス所有者の名前を格納できる単純なミューテックス クラスを定義します。
class mutex
{
public:
explicit mutex(const std::string& mutex_owner = "");
bool acquire() const;
bool release() const;
const std::string& get_name() const {return owner_name_;}
// ...
private:
std::string owner_name_;
// ...
};
ロックが必要ない場合は、パフォーマンス上の理由からこれを渡すことができるように、mutex 型をテンプレート パラメーターにするいくつかのアルゴリズムを変更しました。
class non_mutex
{
public:
explicit non_mutex(const std::string& mutex_owner = "") {}
bool acquire() const {return true;}
bool release() const {return true;}
std::string get_name() const {return "";}
};
これは名前を格納しないため (これをデバッグする必要はありません)、メンバー関数を .ではなく.get_name()
を返すように変更しました。std::string
const std::string&
ここで私の質問は次のとおりです。コードは問題なくコンパイルされ、問題なく動作するように見えますが、このコードベースにはほとんどテストがなく、この関数は通常ではなく、何か問題が発生した場合にのみ使用されます。
この変更によってランタイム エラーが発生する可能性があるのはどのような場合ですか?
これは C++03 環境ですが、C++11 の回答にも興味があります。