Board logo

Subject: 不知道是不是内存漏洞? [Print This Page]

Author: niaoge    Time: 2007-7-2 16:44     Subject: 不知道是不是内存漏洞?

FastMM  共70M的日志 摘一个,其中很多个是这样的

--------------------------------2007/7/2 16:13:13--------------------------------
A memory block has been leaked. The size is: 28
Stack trace of when this block was allocated (return addresses):
51F23BD6 [System][@GetMem]
51F278D1 [System][@NewAnsiString]
51F278FC [System][@LStrFromPCharLen]
B568055 [SimpleWizards\CnBookmarkWizard.pas][CnBookmarkWizard][CnBookmarkWizard.TCnBookmarkForm.UpdateComboBox][744]
B60326C [ExplorerWizard\CnExplore.pas][CnExplore][CnExplore.TCnExploreForm.Create][724]
B60640F [ReopenWizard\CnRoClasses.pas][CnRoClasses][CnRoClasses.TIniContainer.LogFile][787]
B60CDE9 [IdeEnhancements\CnInputSymbolList.pas][CnInputSymbolList][CnInputSymbolList.TSymbolItem.OutputTemplate][636]
B60C658 [CnInputSymbolList][CnInputSymbolList..TCodeTemplateList][972]
410042 [ui\AppMain.pas][AppMain][AppMain.TAppBuilder.EditFlipChildrenSelected][4028]

下面的代码是不是写反了? not 不要? CnExplore.pas内的
  if not Assigned(FFileFilterList) then
    FreeAndnil(FFileFilterList);
  if not Assigned(FDirectoryList) then
    FreeAndnil(FDirectoryList);
  if not Assigned(FFileFilterMenu) then
    FreeAndnil(FFileFilterMenu);
  if not Assigned(FDirectoryMenu) then
    FreeAndnil(FDirectoryMenu);
  inherited Destroy;
  CnExploreForm := nil;

接贴
解决:刚才把 not 去掉了,看不到这一处有leak
接贴
cnShell 内存Leak更多,CnShellCtrls.pas,delphia工作半个小时,退出时,FastMM写了300多M的内存Leak报告,主要是关于cnshellview和cnshellList的,好像写不完,我只好从管理器里强行关bds.exe ,希望这个解决了就好了

[ 本帖最后由 niaoge 于 2007-7-2 19:09 编辑 ]
Author: Passion    Time: 2007-7-3 09:53

if not Assigned(FFileFilterList) then

这堆东西是真写反了!惭愧惭愧,俺们移植代码的时候没仔细检查。
cnshellview和cnshellList我们是从D7的VCL中移植过来的,是为了弥补D5下没这个组件的缺陷。
Author: niaoge    Time: 2007-7-3 10:13

我不知道哪里用到了cnshell,不好查,不然我自己先改改,这地方leak很多,
一般情况下,像ListView,TreeListView 的Data(无指向指针Pointer)在clearItems或是destroy时最容易被忽视
Author: xjw100    Time: 2007-7-3 13:12

FastMM 真的不错!
Author: kendling    Time: 2007-7-3 13:54

哈哈,我也喜欢FastMM
Author: niaoge    Time: 2007-7-4 09:47

325版,close all还是有问题, 出错的地方可能是当close all之后,没有工程,但是应用程度空闲还是要取当前窗体(不存在了)的Context分析
切换编辑View同样会报dll错误(D10)
forms和Units 那个过滤的输入框输入可以,但是按BackSpace会出错
有可能出错的原因与GExperts冲突,能否把GExperts 右键的功能加到cw上?特别是Copy Component Name 这个功能,这样我们就不需要用Gexperts
没有用fastMM测内存了,估计应该不会有泄露了
哈哈,cnControlHook移走了,手法很老练,佩服

[ 本帖最后由 niaoge 于 2007-7-4 15:26 编辑 ]
Author: Passion    Time: 2007-7-4 21:54

Close All的问题我们再看看。

forms和Units 那个过滤的输入框输入可以,但是按BackSpace会出错。——这个问题是这几天改动的时候引入的,也有朋友报告了,今天已修正,326中将会集成。

Copy Component Name在窗体旁边的浮动工具栏上有对应按钮。至于组件右键菜单,CnWizards还没在这方面做东西,估计以后需要的时候再加了。
Author: niaoge    Time: 2007-7-5 10:33

325版很不稳定,可能是换了控件的原因
Author: Passion    Time: 2007-7-5 13:04

改了ControlHook机制,影响是很大。还需要多多测试来修复。
Author: niaoge    Time: 2007-7-8 21:56

326版很稳重,可以不叫Unstable
Author: gz_runwe    Time: 2007-7-8 21:59     Subject: 好象326还是不稳定啊

最典型的情况是,进入D2007,打开一个工程,什么事情都不做,退出系统,关闭系统会弹出调试窗

我这边是VISTA + D2007 + 326
Author: Passion    Time: 2007-7-8 23:38

请问楼上的D2007是否打了update 1?
Author: gz_runwe    Time: 2007-7-9 08:10     Subject: 当然

其实感觉cnPack不稳定就是从Update1开始的,但好象一直都没能解决,不知道D2007 Update1到底改了那里
现在很矛盾啊,装上cnPack,D2007就很脆弱,没有cnPack又感觉,又不习惯...




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