我有一个很难调试的类。奇怪的是,当我将它用作局部变量时,它表现得很好,但是当我将它用作全局变量时,它会在程序退出时出错。
例如:
A a;
int main(){
dosomething(a);
}
bad_alloc
在程序退出时给出异常。
尽管
int main(){
A a;
dosomething(a);
}
效果很好。
我希望,通过知道在什么情况下会发生这种情况,我可以深入了解课堂上的问题。我在很多情况下都尝试了这个类,但症状总是一样的,全局变量总是有问题,而局部变量总是很好。
注1:该类有一个析构函数,它调用一个(非虚拟)成员函数flush
,该函数将一个内部缓冲区写入磁盘并执行一个shell命令来处理该文件。
~A(){this->flush();}
注意 2:我会在继续调试(并简化代码)的同时尝试发布 MWE。目前,了解可以精确发生这种情况的典型情况有助于调试。