Borland Delphi 7 FastMM RTL 补丁(0分)

  • 主题发起人 主题发起人 LSUPER
  • 开始时间 开始时间
上面的代码我试过提升了 50%,可能我电脑比较差 ^_^
 
另外问一下,哪有 fastcode 的下载,原来的没有了[:(]
 
//另外问一下,哪有 fastcode 的下载,原来的没有了
http://sourceforge.net/project/showfiles.php?group_id=130631
 
想问一下:需不需要所有控件都加上一句 FastMM4 然后重新编译再挂载?
 
就是不同的啊,patch 的 getmem.inc 是 Borland 开发人员根据 FastMM4 修改的 For Delphi 2006 的内置内存管理器。
 
我指的是http://sourceforge.net/projects/fastcode/的,不是fastmm
 
http://sourceforge.net/projects/fastcode/
使用 cvs get 啊:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fastcode login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fastcode co -P modulename
不过上面没什么东西的说。
所有的代码可以由:
http://fastcode.sourceforge.net/
下载 ...
 
有没有单独的内存泄漏单元?
 
CnPack 中就有一个啊
MemCheck 也非常不错:
http://v.mahon.free.fr/pro/freeware/memcheck/
 
哪位大侠下载一套完全FastCode找个地方供大家下载吧,我没装cvs啊
 
EurekaLog 5.5 中也带了内存检测吧?
 
to gz_runwe:http://fastcode.sourceforge.net/ 下啊
to 狂迷:没有带。(现在好像最新的没到 5.5 啊 :)
 
是的,我已经下载了FastcodeLib0.3,但里面好象不全,数学函数都没有带,不过非常感谢LSUPER大侠提供网址
 
to gz_runwe:
我也是从www.fastcodeproject.org 下载FastCode 0.3后,发现差一个math.pas
但可以从这个yahoo group的files下面找到:
http://groups.yahoo.com/group/fastcodeproject/

to 狂迷:
内存泄露检查可以考虑TurboPower的 Memory Sleuth
 
测试了一下在2000下编译在98下运行出现错误提示!
标题:Cannot Switch Memory Manager
内容:The memory manager cannot be changed after it has been used.
请查找原因!
 
非常感谢反馈;
2000 下运行有没有问题?
这个是在 AttemptToUseSharedMemoryManager 中报的
我找个 98 看看。
或者干脆恢复到 1.0 的 pas,同时使用 SimpleShareMem 替换 ShareMem 共享内存管理器的方式。
 
to:LSUPER
不太明白你所说的,我在2000 server 下做得程序,使用了你的Borland Delphi 7 FastMM RTL 补丁,在2000下编译和运行没有问题,可是当我将其发布到98系统时出现上述问题,程序不能运行,我恢复到原来的单元文件,重新编译后没有出现问题。
现在我很难选择是否还用Borland Delphi 7 FastMM RTL 。
 
在98下是否应该连带borlandMM.dll
一起发布呀。
其实我在2000系统中只在我的开发机器上测试了,没有在其他的2000系统下测试(忽略了)。
不过现在没有时间做这个测试了,有时间在说吧,反正在98下不带borlandMM.dll
发布出现错误,没有连带borlandMM.dll
发布的情况作测试!
 
愿意继续讨论的请到我的QQ群组里来: 17523790 ,
请求验证时请说明:FastMM 或 DFW 或 Delphi
 
非常非常感谢 deepblue2004 的反馈!
我主要的系统是 windows xp,家里和公司都没有 98 系统测试,直到昨天才有空用 vmware 搭了个 98 进行详尽的测试。
经过测试发现,这是 FastMM 的一个 BUG(不光是 FastMM 4.62、Rtl Patch 还有官方的 Delphi 2006!)在 GetMem.inc 中为了共享内存管理器创建了一个隐含的 label:
GetMem.inc 的 4424 行:
MMSharingWindow := CreateWindow('STATIC', PChar(@UniqueProcessIDString[1]), WS_POPUP, 0, 0, 0, 0, 0, 0, GetCurrentProcessId, nil);
其中 CreateWindow 的原型(GetMem.inc 进行了封套,在 4317 行定义):
function CreateWindow(lpClassName: PChar
lpWindowName: PChar
dwStyle: DWORD
X, Y, nWidth, nHeight: Integer
hWndParent: HWND
hMenu: HMENU
hInstance: HINST
lpParam: Pointer): HWND;
在 winnt 的系统下 hInstance: HINST
传入 GetCurrentProcessId 没任何问题;而在 98 下出错(创建不成功返回 0)!这个应该修改为:
MMSharingWindow := CreateWindow('STATIC', PChar(@UniqueProcessIDString[1]), WS_POPUP, 0, 0, 0, 0, 0, 0, HInstance, nil);
 
后退
顶部