我在Windows中遇到了段错误,但在Linux(相同程序)中却没有。使用GDB(minGW),我得到以下信息:

程序收到信号SIGSEGV,分段故障。 21 0x7c8024f0 in
从C:\ WINDOWS \ system32 \ kernel32.dll发布ReleaseMutex()

该程序在Linux系统上运行完成。崩溃是在此函数的递归调用期间:

    void recursive_paint_char(int x,int y,int **inimage,int new_color,int fore_color)
{

/*
   This routine paints the connected object around the pixel x,y in image inimage
   to the color new_color. The foreground color is assumed to be fore_color.
*/
 int        i;
 int        xt,yt;

 inimage[x][y]=new_color;
 for (i=0;i<8;i++)
 {

  xt=x+xc[i];
  yt=y+yc[i];
  if (inimage[xt][yt]==fore_color)
  {
    printf("this statement prints\n");
   recursive_paint_char(xt,yt,inimage,new_color,fore_color);
   printf("this statement never prints\n");
  }
 }
}


在进行段隔离之前,递归进行到大约171,000个调用

最佳答案

user3386109回答了问题-问题似乎是堆栈大小。

08-27 02:21