2012-01-06 135 views
7

有没有人将SafeMM调试内存管理器移植到Delphi XE2? 2009 SafeMM on CodeCentral不会编译,因为RTL现在使用NativeInt而不是Integer来存储函数。SafeMM for Delphi XE2

+0

您是否考虑过在适当的情况下将'Integer'的声明更改为'NativeInt'? – LaKraven 2012-01-06 02:53:23

+1

我不确定这会变得如此简单。我想我会问,如果有人在我尝试自己做之前已经将SafeMM移植到Win64,那么我不会不必要地重复其他人的努力。 – 2012-01-06 07:06:46

+2

这些天不要大多数人在完全调试模式下使用[FastMM](http://sourceforge.net/projects/fastmm/)?它似乎抓住了我曾经抛弃过的所有黑客,完全是XE2和64位。 – 2012-01-06 10:16:24

回答

3

我已将我的Delphi XE2 port of SafeMM上传到CodeCentral。我已经验证过,它正确地分配大于4 GB的块,并且它在Win64应用程序中使用时可以分配超过4 GB的较小块,并且它在Win32应用程序中仍能正常工作。

我已在2012年7月7日更新了CodeCentral提交,以修复导致SafeMM在两个线程同时释放大块(> 4KB)时崩溃的错误。这个bug是由其原始开发人员在SafeMM 0.3版中引入的。如果您将此版本的SafeMM与旧版本的Delphi一起使用,则需要像在我的版本中那样,在关键部分中将代码封装在FreeLargeBlock中。