Borland Delphi 7 FastMM RTL 补丁(0分)

  • 主题发起人 主题发起人 LSUPER
  • 开始时间 开始时间
改完后,Demo在98下仍然出错
 
LSUPER快出招
能在98下正常运行
能在做dll时,不带其它dll
现在很不爽啊
 
经过和网友的交流,考虑取消 1.2 的 RTL Patch 中默认共享内存管理器,如果需要共享内存管理器可以引用 Patch 过的 ShareMem(其实就是移植 Delphi 2006 的,所以发布时不需要 BorlndMM.dll)或者 FastShareMem、ShareMemRep 等(其实就是当初 1.0 的方式:)
好处:Delphi 7 下替换内存管理器而不需要对原来代码进行任何的修改!
 
2ccc中还没有下载吗?
 
2ccc 需要确认,稍慢,放到 tomore 了 ...
 
安装完了,使用上和没装之前一样吧?
写dll要
uses
ShareMem
(不用带上BorlndMM.dll了吗?)
在工程uses中第一个要加上什么单元?
 
原打算把 98 下共享出错的 BUG 报告给 FastMM 开发组的,发现昨天已经被人抢先一步啦:
http://sourceforge.net/tracker/index.php?func=detail&aid=1452117&group_id=130631&atid=718458
而且 pierre_le_riche 已经确认这是 FastMM 的一个 BUG!
 
to liuchong:
没用 Patch 时怎样的写法,现在就是什么样的写法 ;>
 
别忘了 Exe 和 Dll 同时第一个引用 ShareMem。
老生长谈了 :>
 
LSUPER
98下的BUG解决了,我下你的FastMM吧
 
齐齐抓虫子 ... ;>
 
to LSUPER
既然这是FastMM的BUG
那Borland.Delphi.7.FastMM.RTL.Patch.v1.2比
Borland.Delphi.7.FastMM.RTL.Patch.v1.1
有什么好处?
 
Borland.Delphi.7.FastMM.RTL.Patch 使用了 Delphi 2006 的 GetMem.inc,而这个 GetMem.inc 其实就是 FastMM,所以说这“不光是 FastMM 4.62、Rtl Patch 还有官方的 Delphi 2006”都存在的 BUG。
你可以在 Delphi 2006 下使用 SimpleShareMem 进行共享内存管理器的测试(其实把 patch 中的 Demo 下的 ShareMem 改成 SimpleShareMem 然后在 Delphi 2006 下编译,98 下运行就可以看出来了:)
好处:
替换后不需要对“原来的代码”进行任何的修改,如果出现问题,恢复非常简单(仅仅 restore.bat,对你的代码没有影响!)
BTW:
Delphi 2006 下 ShareMem 和 SimpleShareMem 是两种完全不同的共享内存管理器的机制:前者共享第三方 Dll(borlndmm.dll) 的内存管理器,后者利用“内存桥”的方式进行共享。
 
打了这个补丁以后是否还需要在工程文件最开始uses ShareMem或者别的pas ?
 
我的程序分几个独立文件,采用BPL共享,用Lsuper_D7_FastMM_RTL_Patch_v1.2 需要重新编译vcl70.bpl么
要注意些什么???
 
to satanmonkey:是的,需要 uses sharemem,不过这个 sharemem 已经不是 borland 那个了(替换成 delphi 2006 的 simplesharemem.pas),所以发布时不需要 borlndmm.dll。
to yuzg:应该需要。
 
“彻底实现了 Borland 的内存管理器,可以完全取代现有的内存管理器(“取代”就是第一个 uses FastMM4,that is all ...)”
写DLL时,第一个uses的是ShareMem,那就无法先uses FastMM4了,
在dpr中第一个uses FastMM4也不行啊!
 
许久没看到大富翁上有质量这么高的帖子了 激动ing
 
to liuchong:
1、使用这个 Patch 就不需要使用 FastMM4 了(因为这个 Patch 就是 FastMM4,不过直接集成到 Delphi 的 RTL 源码中了)
2、如果想用 FastMM4,不需要 patch,不过 Dll 和 Exe 间共享内存管理器时需要打开 FastMM4 的编译选项:ShareMM 和 AttemptToUseSharedMM
3、原理上,FastMM4 其实可以和 ShareMem(没有修改前的) 共存的,不过要求重新编译 Borlndmm.dll,这个在 FastMM4 发布的文件中附带了。
4、“不写DLL,想提高程序效率”,可以不使用 patch 而直接“在 dpr 中第一个 uses FastMM4”。
 
后退
顶部