加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

进入主程序之前的分段故障

发布时间:2020-12-16 10:37:15 所属栏目:百科 来源:网络整理
导读:我最近对以前工作的代码做了一些小改动,现在程序在执行时立即遇到分段错误.事实上,它甚至没有成为主要的第一行. 这是代码的开头: int main (int argc,char* argv[]){ fprintf(stderr,"Not even getting here!n"); bool d; bool v; ...} 和gdb的相应输出(编
我最近对以前工作的代码做了一些小改动,现在程序在执行时立即遇到分段错误.事实上,它甚至没有成为主要的第一行.

这是代码的开头:

int main (int argc,char* argv[])
{
    fprintf(stderr,"Not even getting here!n");

    bool d;
    bool v;        
    ...
}

和gdb的相应输出(编译时包含-g标志).
????警告:禁用地址空间随机化时出错:成功

Program received signal SIGSEV,Segmentation fault.
0x0000000000400978 in main (argc=<error reading variable: Cannot access         
memory at address 0x7fffca168f1c,argv=<error reading variable: Cannot 
access memory at address 0x7fffca168f10>) at src/prog.c:35

仅供参考:第35行只是主要方法的左大括号(“{”).没有实际的代码.

我之前从未遇到过这样一个奇怪的错误,我对这是怎么回事感到困惑.在出现此错误之前,开头的代码根本没有改变,并且分段错误甚至没有发生在新代码附近的任何地方这一事实让我大吃一惊.我放在main中的任何代码都没有被执行,因此我无法打印出值以查看出现了什么问题.

此外,我尝试使用/不使用命令行参数运行程序,看看是否是原因.它没有改变任何东西.

解决方法

没有整个代码,很难肯定地说,但基于其他SO帖子和个人经验,我认为你有太多空间分配给main()堆栈上的变量.您可以根据操作系统的角度比较您使用的字节数以及允许程序使用的堆栈大小.请参阅以下帖子: Segmentation Fault before main

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读