我在Windows中遇到段错误,但在Linux(同一程序)中没有。使用GDB(minGW),我得到以下信息:
程序接收信号SIGSEGV,分段错误。 21 0x7c8024f0 英寸ReleaseMutex () from C:\WINDOWS\system32\kernel32.dll
该程序在 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 printsn");
recursive_paint_char(xt,yt,inimage,new_color,fore_color);
printf("this statement never printsn");
}
}
}
递归在段错误之前转到大约 171,000 个调用
user3386109 回答了问题 - 问题似乎是堆栈大小。