这是代码的开头:
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 总结以上是内存溢出为你收集整理的进入主程序之前的分段故障全部内容,希望文章能够帮你解决进入主程序之前的分段故障所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)