奇怪的CB6 full debug模式,请各位高手帮忙
程序在release模式报错,在full debug模式不报错,在release模式去掉代码优化也不报错。
但奇怪的是在full debug模式修改所有在compiler选项卡中与release不同的项后,仍然可以通过
出错的代码:
class cell
{
public:
cell(void);
public:
~cell(void);
public:
bool Dfilling(int x1,int y1,int h);//填充
int a[200][200];
int e;
}
bool cell::Dfilling(int x1,int y1,int h)
{
if(a[y1][x1]==h)return 0;
a[y1][x1]=h;
if(y1-1>=0&&a[y1-1][x1]==e ){Dfilling(x1,y1-1,h);}
if(x1-1>=0&&a[y1][x1-1]==e ){Dfilling(x1-1,y1,h);}
if(y1+1<AY&&a[y1+1][x1]==e ){Dfilling(x1,y1+1,h);}
if(x1+1<AX&&a[y1][x1+1]==e ){Dfilling(x1+1,y1,h);}
return 0;
}
目的是用值h填充a[][]中值等于e的连续的区块
调用:
void __fastcall TForm1::OpenGL1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
cell mycell;
mycell.e=mycell.a[(400-Y)/2][X/2];
mycell.Dfilling(X/2,(400-Y)/2,ToolButton9->Tag%10 );
OpenGL1->Repaint();
}
[解决办法]
class cell
最后 } 后面加上分号 ;
其他是否有问题,你先贴出错误提示,或贴出更多源码,才能分析。
[解决办法]
代码优化后出问题是可能的
[解决办法]
看看栈。可能是递归的时候栈爆掉了吧。
Debug下的默认栈空间可能与发布时的不太一样,也许用的是模拟栈。
我也喜欢用递归,但递归的层数若无法控制,总有种担心的感觉……
[解决办法]
如果可能的话,楼主把递归改用循环实现下,看看是否问题依旧。