2016-04-27 47 views
0

我是学士学位,我的导师问我这个问题,你可以帮我解决这个问题。 我已经做了Google搜索,但我仍然困惑。我有一个C++代码,在执行main()之前在启动时崩溃,问题可能出现在哪里?

有没有找到崩溃原因的工具?

我真的很感激你的时间。

+0

是 - 它被称为调试器。你在什么平台上 – pm100

+0

有些代码请。或者,您也可以调试并自己找出它。 – Ajay

+0

@Ajay这是一个面试问题,基本上要求一个代码示例,可以在主启动前崩溃 – user463035818

回答

2

在实际执行开始之前有几件事发生。我想到的第一件事是全局变量的初始化。例如:

#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; 
} 

而关于如何找到这样的错误的问题,答案是:使用调试器。

+0

只是要清楚 - 这个代码不会崩溃之前,主要 – pm100

+0

实际上我不太确定... – user463035818

+0

@ pm100但没有全局变量初始化之前主要启动? – user463035818

0

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 */ 
}