求救!!!!!!!!

losthold 2003-08-19 09:37:48

我的程序在使用过程中会随机出现如下错误:
1、Access violation at address xxxxxxxx in module 'USER32.DLL'.Read of Address xxxxxxxx.
2、Access violation at address xxxxxxxx in module 'ntdll.dll'.Write of Address xxxxxxxx.
请问一般在什么情况下会出现这样的错误,又都是如何解决的?另外,我用codeguard检测过代码,没有报错。无计可施中,希望大家多多帮忙,分不够还可以加。
...全文
40 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
MikeWKL 2003-08-20
  • 打赏
  • 举报
回复
可能new的时候要注意一下所分配的内存大小是否在临界点,
检查临界点处的容量。

对于出错的客户端机器是否重装一下OS,试试看。
csdnxw 2003-08-20
  • 打赏
  • 举报
回复
我想建立字符数组并不会是这个问题的关键。导致错误的原因一定是其他什么。你有没有查查病毒什么的?
wocard 2003-08-20
  • 打赏
  • 举报
回复
一般对于new的东西要释放,我想写程序的人一般都知道的(当然粗心除外),关键有些代码是应该优化一下
wocard 2003-08-19
  • 打赏
  • 举报
回复
我也碰到过类似的问题,一般来说不一定是内存问题,有时跟你的程序所在的机器,操作系统,还有你机器所安装的程序有关。
一般的解决办法是,把系统升级,打好补丁,还有看看系统中有没有感叹号。
当然还有一个问题一般是你写的程序不太好,效率不高,占用太多的内存,你要把这段代码修改一下,保证程序不要占用系统太多的资源。(比如同时打开很多的页面等)一般这几点你改了后,就可以避免以上的问题了。
windlyzhang 2003-08-19
  • 打赏
  • 举报
回复
内存指针错误,仔细检查一下动态创建指针和使用指针(有没有创建?)的地方,并且在delete时,检查改指针是否还存在!
sprewellkobe 2003-08-19
  • 打赏
  • 举报
回复
把代码贴出来一起帮你看看
losthold 2003-08-19
  • 打赏
  • 举报
回复
好的,我再试试看,谢谢各位关心。
netsys2 2003-08-19
  • 打赏
  • 举报
回复
codeguard在编译时不会报错,它在运行时才报错。

你这问题明显是内存泄漏、错误的指针和句柄。

再检查。。
losthold 2003-08-19
  • 打赏
  • 举报
回复
我使用codeguard编译过整个工程,但是并没有任何错误。
另外很奇怪的是这个问题在部分客户机上出现教为频繁,其他客户机就很少出现或不会出现。
而且这两个错误是随机出现的,没办法定位错误的位置,郁闷中。
不知道有没有朋友碰到过类似问题?希望可以讨论讨论
starstargao 2003-08-19
  • 打赏
  • 举报
回复
用codeguard如何会看不到呢
这就是内存泄漏的问题
主要是对已经删除,或是根本没有创建的对象进行了操作
losthold 2003-08-19
  • 打赏
  • 举报
回复
代码里使用new的地方并不多
只有4处是使用new建立字符数组而已
我都查过了,应该没什么问题。
其他的都是new 单个对象。
losthold 2003-08-19
  • 打赏
  • 举报
回复
谢谢各位关心!!
关于代码:目前的工程是接手别人的,到现在算是基本理清头绪;完整的代码实在太多了,而且还没有定位到出错的代码块,所以很遗憾,代码不能贴出来了。

to yesry(噎死你):
并没有直接使用api

to wocard(大萝卜) 和 Iamsnowgirl(snowgirl):
也许你们是对的,代码已经调试了很多遍,暂时还是看不出来哪里有问题;不过我现在运行这个程序的客户机配置稍低:128M内存,1.7G CPU,运行了Win2000 Pro;工作人员使用时一般同时还打开一个word窗口和一个excel窗口以及一个IE窗口;机器运作感觉偏慢。会不会是因为内存不足呢?也许我应该对程序进行进一步优化。。

今天在调试时确实找到一处是内存释放方式不对的地方,但似乎不是引起以上错误的原因。目前继续研究中。。。
MEFULEU 2003-08-19
  • 打赏
  • 举报
回复
new必须free或delete;

另外,分配的空间最好大点;很多情况都是使用没有定义的空间;

例如:double s[200];

如果使用了s[300];就会...
Iamsnowgirl 2003-08-19
  • 打赏
  • 举报
回复
我也碰到过这样的问题,不一定就是内存泄露,而且这样的问题经常出现,一般是因为程序中的内存分配问题,可以把你的出错程序写出来看看,主要还是看看程序中用到内存的地方的程序有没有不对的地方。
yesry 2003-08-19
  • 打赏
  • 举报
回复
你用了什么传指针的API?

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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