2012-01-06 15 views
7

Czy ktoś poruszył menedżera pamięci debugowania SafeMM do Delphi XE2? The 2009 SafeMM on CodeCentral nie będzie się kompilował, ponieważ RTL używa teraz NativeInt zamiast Integer dla funkcji pamięci.SafeMM dla Delphi XE2

+0

Czy nie rozważyłeś po prostu zmiany deklaracji 'Integer' na' NativeInt' w stosownych przypadkach? – LaKraven

+1

Nie jestem pewien, czy to będzie takie proste. Pomyślałem, że zapytam, czy ktokolwiek już wcześniej przeportował SafeMM na Win64, zanim spróbuję zrobić to sam, więc nie muszę niepotrzebnie powielać wysiłków innych ludzi. –

+2

Czy większość ludzi nie używa [FastMM] (http://sourceforge.net/projects/fastmm/) w trybie pełnego debugowania w tych dniach? Wydaje się, że łapie prawie wszystkie erotyki, jakie kiedykolwiek rzuciłem na niego i jest w pełni XE2 i 64-bitowy. –

Odpowiedz

3

Załadowałem mój Delphi XE2 port of SafeMM do CodeCentral. Sprawdziłem, czy poprawnie przydziela bloki większe niż 4 GB i że może przydzielić więcej niż 4 GB mniejszych bloków, gdy jest używane w aplikacji Win64 i że nadal działa poprawnie w aplikacjach Win32.

Zaktualizowałem moje zgłoszenie CodeCentral w dniu 7 lipca 2012 r. W celu naprawienia błędu, który powoduje awarię SafeMM, gdy dwa wątki próbują zwolnić duży blok (> 4 KB) w tym samym czasie. Ten błąd został wprowadzony w wersji 0.3 programu SafeMM przez jego oryginalnego programistę. Jeśli używasz tej wersji SafeMM ze starszą wersją Delphi, musisz zawinąć kod w FreeLargeBlock w krytycznej sekcji, tak jak to zrobiłem w mojej wersji.

Powiązane problemy