• 7166阅读
  • 5回复

编了个小程序贪吃蛇, linux下没啥问题, windows下编译是通过了, 一运行就报错 [复制链接]

上一主题 下一主题
离线cochlea2007
 

只看楼主 倒序阅读 楼主  发表于: 2010-07-21
编译是没问题, 可一运行就报错, 我用Qt creator编译的, 并且linux下一点问题也没有


错误地点在mainwindow.cpp paintEvent中, 我已经用注释标注出来了, 将错误注释掉运行就没问题了
附件: Snakes.zip (5 K) 下载次数:51
离线xtfllbl

只看该作者 1楼 发表于: 2010-07-21
我下载了,linux(CentOS 5.5)下,编译通过,运行时程序异常终止。楼主在检查看看,程序实在没时间看。
上海欢迎您
离线cochlea2007

只看该作者 2楼 发表于: 2010-07-21
终终终终终终终终终终于找着问题了,类里边设了个变量, 没在构造函数里初始化, 在点击开始按钮中初始化的. 这倒没什么, 关键是, 这个变量在paintEvent中用了, 一启动画面就要调用paintEvent, 这时候这个变量还没初始化呢!!!!!!


气死人了, 警示啊, 警示!!!!!!!! 这种错误真难发现, 也跟我的习惯有关. 我习惯C语言的, 设变量的时候就初始化, 可是C++, 类里边申明变量的时候还得转到实现文件, 在构造函数中初始化, 有时候就忘了, 特别是你这个变量本来并没设计到这个类里, 而是后来添加进去的...


我用Ubuntu Qt-Creator Debug g++编译的时候它可能替我做了这工作, 到Windows下 MinGW 不管我了. 我还纳闷, linux下好好的, Windows下怎么死活不行



没啥经验, 还是个学生, 多郁闷几次就好了
离线snowdream
只看该作者 3楼 发表于: 2010-07-22
回 2楼(cochlea2007) 的帖子
前车之鉴,呵呵~
变量要及时初始化,否则就相当于亲自埋了个地雷。
QQ:273247606
希望与大家一起交流QT~
离线yj_yulin

只看该作者 4楼 发表于: 2010-07-26
真正的问题在这里,数组越界
for(int i=0; i<snake.length && i<MAX; i++)           //错误在此
离线lovelyeyes13
只看该作者 5楼 发表于: 2011-02-08
下载  学习学习
快速回复
限100 字节
 
上一个 下一个