release 和debug的问题...搜索过了很无解啊

aimsam 2010-05-18 11:30:29
用C和SDK VC6写的一个程序..

debug完全没问题,然后改成release准备上交了.但是release里面一个功能出问题了(PS:是一个学生成绩管理系统,名单打印完毕以后,点排序会报错),总是说该内存不能read.

求解啊.然后就自己一步一步看是哪里的问题发现是打印名单的地方出错了,排序过后开始用从链表头一个一个接着打印.
第一个没错,第二个没错,第三也没......一直到第八个就会报错了...弹出内存不能read.

这个就看不懂了.到底错哪里?

小弟新人,请说得具体简单详细一点点先谢谢~!

...全文
126 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
aimsam 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 arong1234 的回复:]
你觉得什么样得东西才是异常?你是不是系统没报错就认为没有异常了?你观察过每个被你访问得区域是不是在允许得范围内了么?
内存访问越界是一种出错地方和导致错误地方可以没有任何关系得地方,它出错得结果可能是很随机得,就如同你说得,为什么前7个都是好得,第8个就出问题了?

看看:http://blog.vckbase.com/arong/archive/2010/05/05/40598.html
……
[/Quote]
呃,这样....这个看来是比较难找...我再找找看
arong1234 2010-05-19
  • 打赏
  • 举报
回复
你觉得什么样得东西才是异常?你是不是系统没报错就认为没有异常了?你观察过每个被你访问得区域是不是在允许得范围内了么?
内存访问越界是一种出错地方和导致错误地方可以没有任何关系得地方,它出错得结果可能是很随机得,就如同你说得,为什么前7个都是好得,第8个就出问题了?

看看:http://blog.vckbase.com/arong/archive/2010/05/05/40598.html

[Quote=引用 4 楼 aimsam 的回复:]
引用 3 楼 skyhb 的回复:
建议LZ在DEBUG中单步执行一下。


跟踪过了,也没发现什么异常啊...
前7个也没错照样打印出来,为什么第8个就出错了
而且跟踪的时候也是正常打印出来就不知道是怎么回事了.
[/Quote]
aimsam 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 skyhb 的回复:]
建议LZ在DEBUG中单步执行一下。
[/Quote]

跟踪过了,也没发现什么异常啊...
前7个也没错照样打印出来,为什么第8个就出错了
而且跟踪的时候也是正常打印出来就不知道是怎么回事了.
lzx_ok 2010-05-19
  • 打赏
  • 举报
回复
这样的问题,是写程序最应该注意,也是很基本的了

使用资源之前,一定要先检测是否可用,

你可以生成一个MAP文件,根据运行出错后的地址来找到出错的代码行,这个方法,你可以在网了上解下,挺管用的,关键字[定位 崩溃 代码行]
向立天 2010-05-19
  • 打赏
  • 举报
回复
james_hw 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 aimsam 的回复:]
用C和SDK VC6写的一个程序..

debug完全没问题,然后改成release准备上交了.但是release里面一个功能出问题了(PS:是一个学生成绩管理系统,名单打印完毕以后,点排序会报错),总是说该内存不能read.

求解啊.然后就自己一步一步看是哪里的问题发现是打印名单的地方出错了,排序过后开始用从链表头一个一个接着打印.
第一个没错,第二个没错,第三也没......一直……
[/Quote]

很明显是内存越界了,debug和release的不同之处在于debug会在栈、堆等处增加额外内存来保留现场痕迹,而你很不凑巧在debug内无法发现。建议在疑似越界的地方通过打印来寻找。
louyong0571 2010-05-19
  • 打赏
  • 举报
回复
程序出错最好的办法就是调试,而且是唯一的办法,呵呵
kingstarer 2010-05-19
  • 打赏
  • 举报
回复
看你第七个节点下一节点指针有没有记录错

在分配节点时把节点地址全部打印出来,在删除节点时也一样

看一下第八个节点指针是不是可用的
cattycat 2010-05-19
  • 打赏
  • 举报
回复
看来debug下还是有问题的,你没发现而已。所以还是重新调试下吧。估计是内存越界之类的读写错误。
Myth_cn 2010-05-19
  • 打赏
  • 举报
回复
可以试试在Release版本中打印日志
qq120848369 2010-05-19
  • 打赏
  • 举报
回复
可移植性问题,应该不会是.
pandazhong 2010-05-19
  • 打赏
  • 举报
回复
很可能是野指针的问题,你看指针指向的位置是不是有效地。
skyhb 2010-05-18
  • 打赏
  • 举报
回复
建议LZ在DEBUG中单步执行一下。
aimsam 2010-05-18
  • 打赏
  • 举报
回复
就是不理解..为什么第8个才开始错...前几个怎么就没越界之类的


无解啊..他们存的地方都是一样的.就感觉想不通.
arong1234 2010-05-18
  • 打赏
  • 举报
回复
不是所有的东西都有现成答案的,只有一些比较常见的、大家都会犯的错误才能指望在网上找到

你的错误从现象看似乎和内存访问越界有关,但是这个问题没有啥直接的答案,你估计需要在debug模式下(虽然它没错)单步调试,每次修改数据时都需要检查是不是越界了,看看代码哪有僻陋。这个问题没有简单解决办法,你有得查了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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