動的に割り当てられた静的グローバル オブジェクトについて非常に具体的な質問があります。私のプロジェクトでは、アプリケーションの存続期間中、スレッド全体のさまざまな場所からアクセスする必要があるオブジェクトはほとんどありません。アプリケーションの初期化時に を作成し、アプリケーションの終了時に破棄したいと考えています。だから私は次のようにしてみました、
ヘッダー ファイル: MyObjectFactory.h
class MyObjectFactory{
public:
static MyObject* GetMyObject();
};
ソース ファイル: MyObjectFactory.cpp
static MyObject* gMyObject = 0;
MyObject* MyObjectFactory::GetMyObject(){
if(gMyObject == 0)
{
gMyObject = new MyObject();
}
return gMyObject;
}
このコードは機能しているように見えますが、いくつかクリアしたいことがあります。
- オブジェクトは一度だけ作成され、オブジェクトへの参照が返されます。( MyObject はテキストファイルのようなシステムリソースをほとんどカプセル化しないため、これが必要です)
- アプリケーションが終了すると、MyObject が破棄されます。
- オブジェクトによって作成されたヒープ ( new を使用しているため) またはグローバル メモリ ( static を使用しているため) はどこにありますか? または、OOP の原則に違反していますか?
- 複数のスレッドから MyObjectFactory::GetMyObject() を呼び出しても問題ありませんか?
- これは、Singleton に多少似たものを達成するための良い方法ですか?
あなたの入力を教えてください。
どうもありがとうございます!