我在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回答了问题-问题似乎是堆栈大小。