注册 登录
编程论坛 C++教室

俄罗斯方块程序编译和运行都没问题,可debug中的.exe文件却运行不了

无名可用 发布于 2010-10-12 22:19, 1145 次点击
只有本站会员才能查看附件,请 登录

这是双击.exe文件后弹出的错误对话框..
引起错误的代码我已经找到了,是Type.h中的vector<Block*> blocks变量为空,所以当程序执行类似blocks[0]->GetR()语句时引起vector下标出界的错误.我在Type.cpp中'Type的构造方法'的最后加上了cout<<blocks.size()<<endl语句,用以查看blocks的大小。
打开决绝方案运行可以正常程序,但运行debug文件中的.exe文件后就出错,请大家帮我看看原因.  

  各种形状和地图都是通过文件生成的,文件都在smallGame2下的file文件夹下
4 回复
#2
无名可用2010-10-12 22:23
忘了传程序了。。
只有本站会员才能查看附件,请 登录
#3
御坂美琴2010-10-13 08:19
说明你真的写错了,请特别注意你的下标
#4
御坂美琴2010-10-13 08:20
release中“没有错”,只是没有去检查下标越界,不代表你的程序是对的
#5
无名可用2010-10-13 13:46
我又仔细找了一下错误原因,发现原来是读文件时出现了异常,我的文件中都是‘0’‘1’,而读文件时却成了‘?’,
,我的程序中遇‘1’就生成new Block(),并放入vector<Block*> blocks中;因为读取的都是‘?’,所以没生成Block,因此vector就为空,接下来对vector操作时就引发了下标越界的错误。
  我把程序稍微改了一点,先显示从文件读取的每一个字符。。我不明白为什么不能正确读出文件中的字符,难道和字符编码有关?还有一点我也令我很疑惑,为什么在release中可以正确读出文件中的字符,而到dubeg中的.exe文件就不行了?如果和字符的编码有关,那也应该两者都出现同样的错误啊..
  这是我改了之后的程序:
只有本站会员才能查看附件,请 登录

1