作者bonoshi (sbo)
看板EE_DSnP
标题[问题] 请教一些经验(关於一些bug)
时间Mon Jan 19 22:45:01 2009
想请教对debug有经验的人
或者是对compiler比较了解的人
其实今天遇到了好几个bug…
除了之前po的那篇外
另外还有两个目前无解的
1.
是#define的问题
我们都知道compiler内建的标头档中
有时会有#define
如果和自己不幸define了和它一样的东西
应该会有问题(是吗?)
但是如果不一样
可能也有问题
我举个例子
include<devc++.h> //里面有#define RANGE 200
.......
.......
#define MY_RANGE 300 //这是我的#define
.......
.......
main(){
if( MY_RANGE != 300)
cout << "not equal" << endl;
}
按照这个例子
想请问以下的情形会不会发生:
compiler先执行#define RANGE 200
将MY_RANGE的RANGE变成200
MY_RANGE就变成新变数MY_200
会吗?
2.
想请问我的程式一开始执行都ok
用到一半按视窗右上角的叉叉直接关掉视窗後
才出现某某记忆体不能为read…
这样依照各位的经验
可能发生的原因是什麽?
(问题可能出在哪里?)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.240.71
1F:推 MrOrz:2. 应该是windows在释放程式所占的所有记忆体时出现的error 01/20 00:59
2F:→ MrOrz: 检查一下物件的destructor,或是有没有 double free之类? 01/20 00:59
3F:→ MrOrz: 应该是这样吧XD" 01/20 00:59
4F:推 wintercobra:所以平常在执行软体的时候,出现这个错误讯息 01/20 10:28
5F:→ wintercobra:就有可能是那个软体本身没写好罗? 01/20 10:28
6F:→ bonoshi:谢谢楼上两位,後来今天早上解决了,是因为有些阵列没有设 01/20 12:14
7F:→ bonoshi:成NULL,造成dereference之後的问题。不过非常令人不解的 01/20 12:14
8F:→ bonoshi:是当程式结束後才出现错误讯息,执行时都不会有。 01/20 12:15
9F:→ bonoshi:这点真的很奇怪… 01/20 12:15
10F:→ bonoshi:补充一下,我是在dereference前检查是不是NULL。但因为没 01/20 12:16
11F:→ bonoshi:有处理好,二维阵列的最後一列没有设成NULL,所以才有这些 01/20 12:17
12F:→ bonoshi:潜在的问题。感谢两位! 01/20 12:17