我作了一个小东东,运行正常,但退出时总有个错误:
带红叉的消息条:PROJECT XXX.exe raised exception class EinvalidPointer
with message 'Invalid pointer operation',PROCESS stopped....
之后是 Runtime error 217 at 004027b0.
why?
我利用CPU WINDOW跟踪过错误代码,发现那根本不是我的程序的错,因为给出的错误地址在物理内存中已经被释放,也就是说这时程序代码已经将实际可利用的2G空间全都还给OS了。但是按照DELPHI的提示,由于EXCEPTION 后跟的是一个类名,所以它是LANGUAGE的错。WHO CAN HELP ME?
带红叉的消息条:PROJECT XXX.exe raised exception class EinvalidPointer
with message 'Invalid pointer operation',PROCESS stopped....
之后是 Runtime error 217 at 004027b0.
why?
我利用CPU WINDOW跟踪过错误代码,发现那根本不是我的程序的错,因为给出的错误地址在物理内存中已经被释放,也就是说这时程序代码已经将实际可利用的2G空间全都还给OS了。但是按照DELPHI的提示,由于EXCEPTION 后跟的是一个类名,所以它是LANGUAGE的错。WHO CAN HELP ME?
解决方案 »
- MDi 窗口页签显示
- 在调用VC写的动态库中函数时,发生的错误
- 程序里调用EXE???????????????????????在线等
- 有关Array 转化为string的问题。flyinwuhan(制怒·三思而后行)进来。
- 如何启动和停止服务,以及获得启动和停止服务的进度
- 用DELPHI+ADO的多层开发
- 请问OS不兼容问题?????(急)
- netwolfds(晓竹)请来拿分
- 难到你们没有将软件打过包吗!!封装BDE和ADO就没人做过吗,居然没人给我上问解答!!
- 大难题!!!!!!!!!!!
- 关于vc和delphi之间的类型问题,我这样做为什么不对呢
- 有没有人用过TDrawGrid 么在给定的cell里draw颜色呢?
在此期间,我修改了一个对数据库的QUERY的脚本。
注:我用的是D7(当然是D版)+瘟2000 ADVANCED SERVER(SP3)
我在程序的ABOUT中调用Theapstatus 和sharemems,是在UNI CREATE EVENT中申请了一个局部变量,目的是将系统的OS INFO 和 MEM 的总数及占用情况SHOW出来,D7自行将UNIT 头部的USES 后添进了SHAREMEMS。结果编译都不报错,运行时ABOUT退出时出现错误,SHOW出来的东西也是乱七八糟的,于是当时就改了,最后使用TMEMSTATUS 实现了功能,但没有意识到去修改头部的东西。这时候我将注意力放到程序的其他主要功能方面去了,直到都完成了,这个问题却越来越扎眼。
查找的过程;
打开DEBUG WINDOWS 中的所有窗口,尤其是MODULAR 和EVENT。
F9编译运行,红叉来了。快去看CPU WINDOWS和EVENT WINDOWS,他们的中断地址都指向0X。,虽然每次都不尽相同,但都是0X0000ABCD,其中A小于4,大多是3。
但这地址其实是未分配的地址。而且中断点前的EVENT就是SHAREMEMS在LOAD。
我删去了UNIT ABOUT 头部的USES后的SHAREMEMS后就一切正常了,TMEMSTATUS不受任何影响。
查手册:32位系统中程序开始时向OS申请4G的空间,后2G归系统使用,前2G的前4M用于LOAD 程序所用的全局变量及涉及到的RTL、DLL等的接口定义和参数,其余就是STACK等东东了。所以我认为是SHAREMEMS在装载时要么与其他RTL冲突,要么是OS排斥他,究竟怎么回事,谁能告诉我?