【问题贴】关于一个小游戏中问题,没发现问题所在,可就是会出错。

天一亮就跑 2011-12-01 12:27:47
程序运行到ontimer进行第9960次左右后自动崩溃,找不出原因,debug发现是int 3?这是什么?反正是汇编的看不懂,求教!
附上源码地址:http://d.1tpan.com/tp1301999514
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
天一亮就跑 2011-12-01
  • 打赏
  • 举报
回复
RE:VisualEleven
用的是计时器,那个F10不能单步跟踪,call stack后直接是出错的地方了,看不到什么东西,只是ball不存在。。。
Eleven 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangyf112 的回复:]
RE:g6785654
出错是内存不能为读,不知道什么意思,应该是吧。

RE:gameslq
用了你的方法,但是在timer(1)第二次就出问题了,if(nIDEvent == 1)中把所有ball free了,但是执行时后面的赋值好像出错了。。。我debug发现if(nIDEvent == 2)中的ball是NULL。
问一下,当开启两个timer会不会在timer1执行到……
[/Quote]
Debug下call stack,看函数调用堆栈~
天一亮就跑 2011-12-01
  • 打赏
  • 举报
回复
RE:gameslq
我又试了那个重复利用的,我是每次执行timer1时多加一个ball,那么我就先把所有已存在的ball重新赋值,即

ball = firstball;

while (ball != NULL)
{
//here赋值
ball = ball->next;
}
//再新创建一个ball
temp = (BALL*)malloc(sizeof(BALL));
memset(temp, 0, sizeof(BALL));

temp->x = rand()%800 +2;
temp->y = 11;
temp->cx = rand()%(num_sum - 4) - 3;
temp->cy = rand()%(num_sum - 4) - 3;

ball = temp;

我用了这个方法,代码对不?我执行发现还是有问题啊,在第一次就出错。
天一亮就跑 2011-12-01
  • 打赏
  • 举报
回复
RE:g6785654
出错是内存不能为读,不知道什么意思,应该是吧。

RE:gameslq
用了你的方法,但是在timer(1)第二次就出问题了,if(nIDEvent == 1)中把所有ball free了,但是执行时后面的赋值好像出错了。。。我debug发现if(nIDEvent == 2)中的ball是NULL。
问一下,当开启两个timer会不会在timer1执行到一半时另一个timer2开始执行?

RE:ouyh12345
"可能是缓冲区溢出
调试时,看不到调用堆栈吗?"这句话怎么说?看不懂啊,菜鸟。。。
ouyh12345 2011-12-01
  • 打赏
  • 举报
回复
可能是缓冲区溢出
调试时,看不到调用堆栈吗?
gameslq 2011-12-01
  • 打赏
  • 举报
回复
每次if (nIDEvent == 1) 就分配内存
而不进行释放,应该加上释放内存动作
如:
对话框初始化时
	ball = firstball=temp = NULL;

if (nIDEvent == 1) //等级时间间隔计时器
{ //先是方内存
temp = ball = firstball; //恢复ball指针位置
for ( ;ball != NULL;ball=ball->next)
{
free(ball);
}


另外还可以分配一次内存,重复利用,这样效率更好
Ginie 2011-12-01
  • 打赏
  • 举报
回复
int 3错误,可能是内存没有释放掉吧

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧