你们遇到过这种问题吗:运行时而正常时而非法,但是加入一条调试语句就正常了?
我编写的程序中间用到了string,fstream,map数组。在运行的时候运行时而正常时而非法。后来我加了一句Application->MessgeBox的调试语句,就发现运行正常了。以前在用DEV-C++的时候也碰到过运行不正常,但是加了一句cout语句就正常了。
大家说说是什么怎么回事?
问题点数:20、回复次数:9Top
1 楼halfdream(哈欠)回复于 2002-12-03 18:09:36 得分 0
都是有原因可以找的.一般都是程序编写的问题,具体举出实例吧.Top
2 楼Adayuer(饭碗饭碗饭碗你在哪里?)回复于 2002-12-03 18:23:32 得分 20
我也遇到过这样的情况...怀疑是运算速度太快了...有些事情来不及做就被下一条语句给替换掉了。..于是出错...
哈哈,猜的原因.Top
3 楼favorit(九天剑舞·曾几何时,醉里挑灯看剑)回复于 2002-12-03 19:45:04 得分 0
暂时还没有碰到过...Top
4 楼ccrun(老妖)(www.ccrun.com)回复于 2002-12-03 20:20:05 得分 0
估计是指针惹的祸。Top
5 楼copy_paste(木石三)回复于 2002-12-03 20:27:34 得分 0
代码哩。
哈欠也跑这来了。嘻嘻Top
6 楼slwqw(四大名捕之追杀令)回复于 2002-12-03 20:49:13 得分 0
我也碰到过这种问题,不过我有时声明了一个没有任何用处的数组(大小有严格限制),问题就解决了。至今也不知道到底是怎么回事 :(Top
7 楼copy_paste(木石三)回复于 2002-12-03 20:52:41 得分 0
我更倒霉,用GetMem函数得到的指针都错,你说怎么回事?
后来用了GlobalAlloc, GlobalFree就没事了,NND,气的半死Top
8 楼Tony_2002(Builder迷)回复于 2002-12-03 20:58:24 得分 0
我最近看了一本书,说到要防止“野指针”,当你用到指针变量、数组、分配内存时,要对其进行初始化,内存分配成功并且初始化后,还要防止操作越界,比如数组的下标多1或少1,MALLOC和FREE、NEW和DELETE要配对使用,DELETE和FREE后要将指针设为空,这些工作不做好,程序就可能出现偶然的错误,查这类错误非常困难,与其如此,不如在最初设计时就不怕麻烦。
这本书是林锐写的《高质量程序设计指南---C++/C语言》,内容不多,写得很风趣,读起来不枯燥而且比较实用,专讲良好的编程风格,有兴趣可以一读。
其后所附作者的“大学十年”更是有趣,看了不禁觉得自己白上了大学。呵呵!建议现在正在上学的同学不妨看看。
Top
9 楼fangrk(加把油,伙计!)回复于 2002-12-04 14:23:46 得分 0
我的程序是这样:从指定的服务器上上面下载若干个.zip文件,然后提取相同文件名的.txt文件。从每个提取的.txt文件中间读取信息综合后得到我要的结果。
我今天把大循环改为了小循环,方便了调试,发现了原因:由于解压缩出来的文件的保存速度跟不上程序运行的速度,所以出错。我用Sleep函数延迟后效果很好。
谢谢大家的参与。Top
相关问题
- Delphi中调试程序时,怎么连注释掉的语句也能运行?
- 在server sql中调试通过的sql语句为什么在asp中无法运行?
- 快疯了,用逐语句或逐过程调试,结果正确,一旦正常运行,总是出错!!!
- Access中怎么调试SQL语句?
- VC++如何逐语句调试?
- 怎么进行逐语句调试
- 怎么程序调试不了呢?连private void Page_Load(object sender, System.EventArgs e)都没有运行到,只到前面定义的语句.
- vc调试问题:运行到printf()语句时弹出Find Source对话枢,点击取消后进入汇编代码、、、
- 使用复合报表在pb调试环境下能正常运行,但伪编译后却出现非法操作.
- 如何编写调试运行JSP?




