递归调用把栈给堆满了,有什么办法没?
{
unsigned int i=::GetPixel(hdc,x,y);
if(x<=140||x>=WinW||y>=WinH||y<0||bkcolor!=i||usecolor==i)
{
return ;
}
else if(bkcolor==i||usecolor!=i)
{
::SetPixel(hdc,x,y,usecolor);
aa(hdc,x+1,y);
aa(hdc,x,y+1);
aa(hdc,x-1,y);
aa(hdc,x,y-1);
}
}
我想用这个功能实现画板填充,但是填的内容太多了窗体就自动关了,我觉得好像是栈堆满了,各位大侠帮帮忙啊
作者: tan416966130 发布时间: 2011-06-16
作者: ouyh12345 发布时间: 2011-06-16
作者: kyotrue 发布时间: 2011-06-16
作者: VisualEleven 发布时间: 2011-06-16
作者: mengfeihong 发布时间: 2011-06-16
不过如果递归次数太多估计也不照,毕竟函数调用要压栈
作者: shenyi0106 发布时间: 2011-06-16
static unsigned int i=::GetPixel(hdc,x,y);
作者: yzm888 发布时间: 2011-06-16
看你的代码就可以看出,在栈中你创建了unsigned int i。
疯狂的递归,这个4字节的增量让你栈满出,
考虑下unsigned int i是否可以用一个固定大小的成员容器来替代。
作者: chenjiawei007 发布时间: 2011-06-16
作者: First_Soul 发布时间: 2011-06-16
作者: tanghyes 发布时间: 2011-06-16