请帮帮忙,静态变量释放为了
的问题:在下面的代码核心转储:
我有一个抽象类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