社区
Windows SDK/API
帖子详情
出现 "KERNEL32.DLL 中导致无效页错误" 怎么办?
lanshing
2003-10-13 11:55:31
我用 Delphi7 编写了一个软件,现在这个软件运行几天后退出时,会出现“KERNEL32.DLL 中导致无效页错误”,在调试状态,会进入到不是我的源程序里面,都是一些汇编代码?
请问在这种情况下,改如何判断在哪里出错了?
...全文
147
10
打赏
收藏
出现 "KERNEL32.DLL 中导致无效页错误" 怎么办?
我用 Delphi7 编写了一个软件,现在这个软件运行几天后退出时,会出现“KERNEL32.DLL 中导致无效页错误”,在调试状态,会进入到不是我的源程序里面,都是一些汇编代码? 请问在这种情况下,改如何判断在哪里出错了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lanshing
2003-10-17
打赏
举报
回复
我这边是这样的:程序在Win2K、WinXP、Win2003上执行均没有问题;在Win98下如果连续执行几天后,程序退出时有时会出现此问题。我仔细检查了程序退出代码,后来发现是程序退出时调用 FreeLibrary 时引起,按说也就是这个dll在退出时有问题,可是我这个dll功能极其简单,根本不存在内存泄漏的问题。现在我在程序退出时把 FreeLibrary 语句删除(由操作系统帮我释放dll)后,没有再出现这个问题。 我也百思不得其解。
另外我的程序是在 Win2K 上编译的。
wlw88
2003-10-17
打赏
举报
回复
你用到了哪些API函数?
星之瀚海
2003-10-17
打赏
举报
回复
是内存泄漏,我遇见过,主要是由于程序中有一些内存没有及时释放造成的,而在Windows系统中,一个进程在销毁时,要释放掉所有内存的,所以这时就导致了上面的错误,请楼主好好找找吧,我上次找了一个星期
lanshing
2003-10-17
打赏
举报
回复
不是内存泄漏。是动态卸载dll时出现问题。
lanshing
2003-10-13
打赏
举报
回复
内存泄漏不应该会在程序退出时出错吧?
huojiehai
2003-10-13
打赏
举报
回复
内存泄漏
lanshing
2003-10-13
打赏
举报
回复
详细错误是:
"在 015f:bff881b8 的模块
KERNEL32.DLL 中导致无效页错误。
Registers:
EAX=c0030120 CS=015f EIP=bff881b8 EFLGS=00010216
EBX=095fff58 SS=0167 ESP=094fffac EBP=09500018
ECX=095001cc DS=0167 ESI=81749fdc FS=2b37
EDX=bff768d5 ES=0167 EDI=095001f4 GS=0000
Bytes at CS:EIP:
53 56 57 8b 30 83 7d 10 01 8b 4e 38 89 4d f8 75
Stack dump:"
可是用编译 .map 文件后没有 bff881b8 附近的代码。
cuihl
2003-10-13
打赏
举报
回复
只能慢慢查找了,仅凭此内存错误很难定位源码。
你应该仔细检查一下程序退出时执行的代码。
尤其是清除对象、释放内存之类的操作。
lanshing
2003-10-13
打赏
举报
回复
那该如何查找呢?我知道VC里面可以通过编译 .map文件的方式查找,可是DELPHI下该如何查找此类错误呢?
另外:我的程序也不是说每次都会出错,而是运行比较长的一段时间后会此错。
huojiehai
2003-10-13
打赏
举报
回复
可能是退出时调用API出错,释放内存出错,可能是你的程序在运行过程中的某些操作已导致内存空间混乱
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章