我需要帮助..我正在制作一个模仿涂料桶的功能..问题来了,当一半的图像着色时,发生此错误“ 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/

10-12 20:43