我需要帮助..我正在制作一个模仿涂料桶的功能..问题来了,当一半的图像着色时,发生此错误“ NTVM遇到非法指令”
这是我的“存储桶”代码:
void bucket(int x, int y, int fillColor)
{
if(getpixel(x,y)==getpixel(x,y+1)){
putpixel(x,y,fillColor);
bucket(x,y+1,fillColor);
}
if(getpixel(x,y)==getpixel(x+1,y)){
putpixel(x,y,fillColor);
bucket(x+1,y,fillColor);
}
if(getpixel(x,y)==getpixel(x,y-1)){
putpixel(x,y,fillColor);
bucket(x,y-1,fillColor);
}
if(getpixel(x,y)==getpixel(x-1,y)){
putpixel(x,y,fillColor);
bucket(x-1,y,fillColor);
}
}
据推测,“填充”算法的问题在于您的递归堆栈不支持所有调用……至少有一半的图形是彩色的。
PS:我正在Borland c ++ v3.1上使用
最佳答案
我想美元会变成甜甜圈,你正在炸毁筹码。 NTVM是Windows的Dos模拟器。我想它的堆栈有限。尝试对堆栈(可寻址范围)之外的存储器进行寻址将导致非法指令。这也可以解释为什么只对大图片才能使用它。
关于c++ - C型油漆桶,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11298596/