2012-01-06 5 views
7

SafeMM 디버깅 메모리 관리자를 Delphi XE2로 이식 한 사람이 있습니까? 2009 SafeMM on CodeCentral은 컴파일되지 않습니다. RTL이 이제 메모리 함수에 Integer 대신 NativeInt를 사용하기 때문입니다.SafeMM for Delphi XE2

+0

적절한 경우 'Integer'의 선언을'NativeInt'로 변경하는 것을 고려하지 않았습니까? – LaKraven

+1

그게 그렇게 단순 할 지 모르겠습니다. SafeMM을 Win64에 이식하기 전에 누군가가 SafeMM을 이식했는지 묻습니다. 그래서 다른 사람들의 노력을 불필요하게 복제하지 않습니다. –

+2

요즘 대부분의 사람들은 [FastMM] (http://sourceforge.net/projects/fastmm/)을 전체 디버그 모드로 사용하지 않습니까? 그것은 거의 모든 nasties를 던져 버린 것 같습니다. 그리고 완전히 XE2와 64-bit입니다. –

답변

3

Delphi XE2 port of SafeMM을 CodeCentral에 업로드했습니다. 필자는 4GB보다 큰 블록을 올바르게 할당하고 Win64 응용 프로그램에서 사용될 때 4GB 이상의 가치가있는 작은 블록을 할당 할 수 있으며 Win32 응용 프로그램에서 올바르게 작동한다는 것을 확인했습니다.

두 개의 스레드가 동시에 큰 블록 (> 4KB)을 해제하려고 할 때 SafeMM이 중단되는 버그를 수정하기 위해 2012 년 7 월 7 일에 CodeCentral 제출을 업데이트했습니다. 이 버그는 원래 개발자가 SafeMM 0.3 버전에서 도입했습니다. 이전 버전의 Delphi에서 SafeMM의이 버전을 사용하는 경우, 필자는 버전에서 수행 한 것처럼 코드를 FreeLargeBlock에 포장해야합니다.