C-进入MAIM之前的分割故障



我最近对先前工作的代码进行了较小的更改,并且该程序在执行后立即遇到细分故障。实际上,它甚至都不会进入Main的第一行。

这是代码的开始:

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

fyi:第35行只是主要方法的开放支架(" {")。没有实际的代码。

我以前从未遇到过如此奇怪的错误,我对这种情况感到困惑。在出现此错误之前,一开始就没有更改代码,并且在新代码附近甚至没有发生分段故障的事实,这使我很大。我投入的任何代码都不会被执行,因此我无法完全打印出值以查看出了什么问题。

另外,我尝试使用/不使用命令行args运行该程序,以查看这是否是原因。它不会改变任何东西。

没有整个代码,很难确定,但是基于其他帖子和个人经验,我认为您的空间太多了,分配给了main的变量()。比较您使用的字节数量很有用,并且从操作系统的角度使用程序的堆栈大小。请参阅以下文章:MAIN

之前的分割故障

找到了错误。我有一个带有其他50个结构的阵列的结构,该数组中的每个元素也都具有其他50个其他结构。我迅速将阵列的大小更改为1,以确保这是原因,因此。

MAIN中的代码现在执行。

相关内容

  • 没有找到相关文章

最新更新