首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

奇怪的CB6 full debug模式,请帮忙

2012-08-10 
奇怪的CB6 full debug模式,请各位高手帮忙程序在release模式报错,在full debug模式不报错,在release模式去

奇怪的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下的默认栈空间可能与发布时的不太一样,也许用的是模拟栈。
我也喜欢用递归,但递归的层数若无法控制,总有种担心的感觉……
[解决办法]
如果可能的话,楼主把递归改用循环实现下,看看是否问题依旧。

热点排行