我是学士学位,我的导师问我这个问题,你可以帮我解决这个问题。 我已经做了Google搜索,但我仍然困惑。我有一个C++代码,在执行main()之前在启动时崩溃,问题可能出现在哪里?
有没有找到崩溃原因的工具?
我真的很感激你的时间。
我是学士学位,我的导师问我这个问题,你可以帮我解决这个问题。 我已经做了Google搜索,但我仍然困惑。我有一个C++代码,在执行main()之前在启动时崩溃,问题可能出现在哪里?
有没有找到崩溃原因的工具?
我真的很感激你的时间。
在实际执行开始之前有几件事发生。我想到的第一件事是全局变量的初始化。例如:
#include <cstdlib>
int getSomeValue(){
// some code to produce crash, e.g. as suggested by Barmar...
abort();
return 0;
}
int value = getSomeValue();
int main(){
return 0;
}
而关于如何找到这样的错误的问题,答案是:使用调试器。
只是要清楚 - 这个代码不会崩溃之前,主要 – pm100
实际上我不太确定... – user463035818
@ pm100但没有全局变量初始化之前主要启动? – user463035818
As @ tobi303表示全局变量在main
之前被初始化。
如果其中一个全局变量是一个对象,那么该对象的构造函数会在main
之前运行。
如果该构造函数调用其他函数,那么在main
之前也会调用这些函数。
class SelfCrashing
{
public:
SelfCrashing() { int x = *(int*)NULL; } // Deliberate crash
};
SelfCrashing myGlobal; // Default Constructor called
int main()
{
/* Program never got here */
}
是 - 它被称为调试器。你在什么平台上 – pm100
有些代码请。或者,您也可以调试并自己找出它。 – Ajay
@Ajay这是一个面试问题,基本上要求一个代码示例,可以在主启动前崩溃 – user463035818