Board logo

Subject: 可能200或201版本有内存bug [Print This Page]

Author: VictorWoo    Time: 2006-7-21 16:07     Subject: 可能200或201版本有内存bug

直接打开任何.dpr工程,跳出n个“内存管理监视器指针列表溢出,请增大列表项数!”,只能终止delphi进程。
在写代码的时候调用某个自定义函数,写到  MyCompressData(src, len……后面还没写完。应该是在len的自动完成处
处就跳出同前面所述的框来。

由于我是近期更新的200和201版本,这个“内存管理监视器指针列表溢出,请增大列表项数!”提示好象是CnPack的memProf单元特有的,故怀疑这两个版本有问题。

请帮忙分析一下,谢谢。
Author: shenloqi    Time: 2006-7-22 10:57

我下载了最新的源代码查了一下,cnpack和cnwizard并没有将cnmemprof.pas编译进,所以不应该出现这样的情况。
cnmemprof是用于对小型的项目进行内存检测的,所以存在一些先天上的缺陷,如限定了内存监视指针的个数等。(我写cnmemprof的时候还没有出现fastmm4,现在有了fastmm4,我建议使用fastmm4的fulldebugmode来检测内存泄露)。
不知道您的机器上有没有其他的专家或设计器组件包使用了cnmemprof单元,如果将cnmemprof单元编译进其他的专家,也会导致cnmemprof替换掉delphi自带的内存管理器,这样也有可能会导致出现你说的错误。

所以切记,不要在delphi的专家和设计器组件包中引入cnmemprof之类的替换内存管理器。
Author: VictorWoo    Time: 2006-7-24 09:24

设计器组件包指哪一种?
我检查了机器上装的专家,有如下:
ExptDemo
CnWizards_D7
DelForEx7
VssConnexion
GExperts
MidexExpert
有点奇怪,除了CnWizards_D7以外,似乎都是老外写的专家啊。DelForEx7用了很久很久,也不该这个时候突然不能用。所以现在把怀疑对象集中在您说的“设计器组件”不知是指哪一种?
谢谢回复!
Author: shenloqi    Time: 2006-7-24 09:39

是设计期组件包,就是Delphi的Install Component出来的对话框中列出来的bpl。
这些bpl会被IDE装载,如果这些bpl包括了cnmemprof等替代内存管理器,就可能会出现这个情况。

我记得很久以前的CnPack(不是CnWizards,是CnWizards使用到的基础组件包)组件包中曾经将CnMemProf打进dpk中了,如果你机器上的CnPack还是老的话,就可能会出现这个情况了,建议你检查一下。如果的确是CnPack包含了这个单元的话,将这个单元从dpk中移除或者下载最新的源代码重新编译应该就可以了。
Author: VictorWoo    Time: 2006-7-24 21:34

嗯,今天忍无可忍一直弹框的时候去找了一下把CnMemProf从User包里除去了,顺便也除去了CnPack,不知道是哪个操作生效了,现在用起来没有问题了。
不过我觉得奇怪,为何User包里的东西会影响我其他工程?

另,我下的是 http://www.cnpack.org/showdetail.php?id=423&lang=zh-cn
CnPack 2005-11-13 CVS 包,好象没有更新的了啊?
Author: shenloqi    Time: 2006-7-25 09:51

CnWizards本身是没有问题的,2005-11-13的包应该是有问题的。
你需要将这个包里面的CnMemprof去掉(在dpk中删除有CnMemprof的那行),重新编译就可以了。
Author: VictorWoo    Time: 2006-7-25 10:19

对。应该是这样的。不过这似乎是我在网站上看到的最新版本了,是不是后面都没有更新?
没有装CVS,不便帮cnpack更新了
Author: shenloqi    Time: 2006-7-25 23:18

可能后来没有再在网上放出最新的CnPack的源代码吧




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0