C++ 程序没到断点就 crash,为什么?

题目描述

一个 C++ 程序,调试时在 main 函数第一行打断点,run 起来以后,没到断点就 crash 了。
有什么原因可能引起这个问题?

题目来源及自己的思路

这是我在面试今日头条上海,遇到的一道题目,完全没思路。

大佬教我

阅读 3.1k
3 个回答

既然在main第一行都没run起来,我想是不是在第一行之前发生了错误?比如以下代码,你在main第一行cout打断点,没到断点就会crash,因为在mian函数之前,先执行了全局变量的构造函数。我简单想了一下,这也算个原因吧。应该还有一些别的原因会造成,看看别的大神怎么说。

#include <iostream>
using namespace std;

class B
{
public: int x;
};

class A
{
public: A();
};

A::A()
{
    B *b = new B();
    delete b;
    cout << b->x;
}
A a;
int main()
{
    cout << "hello";
}

main 函数前,先执行

+ load

方法,

再执行 C++ 的函数,

长这样,

__attribute__((constructor)) void pName(){
    printf("来了 : %s \n",__func__);
}

+ load 方法中,也可能出错

补充 main 函数前,走的 CPP 方法类型

__attribute__((constructor)) void doBeforeMain(){
    printf("试一试 : %s \n",__func__);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题