請幫幫忙,靜態變量釋放爲了
的問題:在下面的代碼核心轉儲:
我有一個抽象類SomeOtherClass,並從中衍生SomeOtherClassImpl。
這是導致麻煩的代碼:我有MyClass的類型的一些靜態變量在其他翻譯單元
class MyClass
{
public:
void someFunction()
{
myVector().push_back(someOtherClassDefault());
}
private:
static std::vector<SomeOtherClass const *> & myVector()
{
static std::vector<SomeOtherClass const *> theVector;
return theVector;
}
static SomeOtherClass const * someOtherClassDefault()
{
static SomeOtherClassImpl theDefault;
return &theDefault;
}
};
。
該問題很奇怪,因爲程序退出時發生段錯誤。當然可以在矢量之前釋放默認值,但有什麼區別?當main已經完成時,兩者都釋放。
您的幫助將不勝感激。
上面的代碼我看不出任何明顯的錯誤,所以你可能需要提供一個「SomeOtherClassImpl」的精簡版本。如果您在調試器中運行應用程序,發生seg-fault時的回溯是什麼? – 2011-04-28 16:27:51
你認爲「main已經完成」之後會發生什麼事情與你無關? – 2011-04-28 16:35:26
尼古拉,謝謝你激勵評論:)但你是對的,這是我的事,而這實際上是我的錯誤。 – 2011-04-29 13:43:51