阅读:2045回复:17
一个VC++的问题,debug 和release
一个程序在DEBUG版本下很好的运行,但到了RELEASE版本下就出现如下错误:
Unhandle exception in dyjc.exe:0x00000005:Access violation 请帮忙. |
|
沙发#
发布于:2002-07-23 10:20
呵呵
这个比较难 有不能跟 |
|
|
板凳#
发布于:2002-07-23 10:25
Release下也可以调,不过具体怎么调试我忘了。你可以查一查。
|
|
|
地板#
发布于:2002-07-23 10:25
看看是不是有pointer没有赋值就用了。
|
|
地下室#
发布于:2002-07-23 10:27
那debug怎么是好的
看看是不是有pointer没有赋值就用了。 |
|
|
5楼#
发布于:2002-07-23 10:30
这种问题我也遇到过。当时我解决的方法是一步步注释,然后编译,运行。整整注释了一天才找到!
|
|
|
6楼#
发布于:2002-07-23 10:33
同情财主。 :D
|
|
7楼#
发布于:2002-07-23 10:34
内存方面的问题,以前我也遇到过,可能有一些变量没有分配内存,如指针变量,后面有访问了它,就会造成访问违例,好好检查一下,在debug下,vc会协助处理一些编程上的细节,检查不会很严格,在
release下是很严格的 |
|
8楼#
发布于:2002-07-23 10:35
当时我的错误是在程序中使用SendMessage函数给一个我自己创建的对话框,在关闭对话框时就会在Release版本出现那种错误。最后没辙了,用全局变量,不用SendMessage就好了。Faint!
不知对你有无帮助。 :D |
|
|
9楼#
发布于:2002-07-23 10:36
同情财主。 :D 谢谢。眼泪哗哗的。 :D :D :D |
|
|
10楼#
发布于:2002-07-23 10:41
那debug怎么是好的[/quote] 比如: CXXX *pxx; #idef _DEBUG pxx = new CXXX; #endif pxx->XXX(); release的时候当然错了。 |
|
11楼#
发布于:2002-07-23 10:47
[quote]那debug怎么是好的[/quote] 比如: CXXX *pxx; #idef _DEBUG pxx = new CXXX; #endif pxx->XXX(); release的时候当然错了。 [/quote] 你这个是充分条件,不是必要条件。arthurtu也不会是这种问题吧?! :) |
|
|
12楼#
发布于:2002-07-23 10:54
偶觉得也不会是这样的问题
|
|
|
13楼#
发布于:2002-07-23 10:54
呵呵,我只是示例给zydcat看看。
我碰见的是因为没有检查返回的pointer是否为NULL就用了。原来以为不可能是NULL的。 |
|
14楼#
发布于:2002-07-23 15:23
内存方面的问题,以前我也遇到过,可能有一些变量没有分配内存,如指针变量,后面有访问了它,就会造成访问违例,好好检查一下,在debug下,vc会协助处理一些编程上的细节,检查不会很严格,在 同意,有时候也是因为变量没有赋初值等等。 access 00005 多是内存问题。 |
|
|
15楼#
发布于:2002-07-23 16:57
0x00000005 正是边界检查错误代码,可以在2000DDK中查看详细的说明。
|
|
|
16楼#
发布于:2002-07-24 04:05
我碰到过的是一个对话框中的控件自己会触发另一个控件的消息,在InitDialog的时候形成了无限递归,我整整找了一个礼拜,才搞明白是怎么回事!可恶的ms,msdn里根本就没有说那个该死的控件的这个行为!
|
|
17楼#
发布于:2002-07-24 09:30
建议使用
try...catch...throw宏 如果还不行,能否将出错部分代码铁出来,大家好帮你分析 |
|