一直困扰的一个问题,高手来帮帮忙吧,软件一关闭就出错误提示!!(50)

  • 主题发起人 主题发起人 whwxh
  • 开始时间 开始时间
W

whwxh

Unregistered / Unconfirmed
GUEST, unregistred user!
编译时出错提示Exception EAccessViolation in module HR.exe at 00222DB0.Access violation at address 00622DB0 in module 'HR.exe'.Write of address 024C9AEC执行文件关闭时出错0x0062db0"指令引用的"0x024c9aec"内存。该内存不能为"written"。在网站上找过,他们都说是内存释放的问题。有人能帮忙看看有没有其它的办法,能详细点就好了。
 
程序关闭时,有对象还没有释放~~
 
同楼上…………………………………………
 
这种错误虽然知道是这个原因,但没法详细分析,连跟踪都很难。有没有可能是对象多次释放?或者使用了多线程,导致某个变量是否了,线程中还在使用?慢慢分析可能是哪个单元有问题,然后再在那个单元查找原因吧。
 
装个 EurekaLog ,用上就可以跟到那个错误行了。
 
照这个错误提示的意思,是访问了一个已经被释放掉的对象。仔细检查检查。
 
还是找不出原因,唉,哭 死
 
最常见的,是多线程.多线程中有去访问FORM中的控件.
 
是这样的,你有窗体没有释放等原因会出现的在close代码中加 aopplication.hlt 吧
 
或者加 application.Terminate
 
这样的错不好找呀。包括Dll的调用释放都有可能引起这样的错。
 
没有见代码,谁知道哪儿出错了...
 
难说,没代码 不好判断 把关键处代码贴出 就是CREATE和FREE那几下.
 
用EurekaLog找出是 ntdll.dll这个文件的问题,可我还是不知道为什么,代码我检查过了没问题
 
检查一下有没有重复释放对象的地方
 
可以这样检测,把程序一部分一部的加上去,每次都运行,如果有错,那问题肯定出在新加的一部分上,这样就可以慢慢定位了!
 
记得很早之前我做一个工程时也遇到过这个问题,当时我是把程序里的try excet end之类的干掉就正常了(特别是delphi在调用一些C语言编的DLL时最好不要保护),祝你好运!
 
或者 是动态内存重复释放, 我就检查出一个, 还是别人写的, 还是无意中连猜带蒙才找出来的~~ 晕死我了~.
 
我也经常碰到这种情况,一般是1、对象没释放2、在关闭事件中,访问已经释放的对象。3、使用了多线程这种错误查找比较麻烦
 
原因太多,不过一般出在哪个对象没有释放的问题上,好好检查一下
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
962
import
I
I
回复
0
查看
988
import
I
I
回复
0
查看
626
import
I
后退
顶部