저는 64 비트에 큰 델파이 코드베이스를 적용하려고합니다. 나는 그들을 교체 한 다음 캐스트 찾을 수 있습니다Delphi 64-bit : 잘못된 캐스트 찾기?
var
p1,p2 : pointer;
begin
inc(Integer(p1),10);
p2 := Pointer(Integer(p1) + 42);
64에서 해당 올바른 만드는 대신 nativeint로는-캐스트 : 대부분의 경우 포인터가 비슷한이 32 비트 값에서 /로 주조하는 선이있다 비트 모드.
그러나 나는 그들 모두를 발견했는지 확신 할 수 없습니다. 때로는 캐스트가 더 미묘하기 때문에 "integer ("는 충분하지 않습니다.) 문자열을 텍스트로 검색하는 것만으로도 충분하지 않습니다.
포인터 값이 정수 범위를 초과하면 "정수 ("캐스트가 64 비트에서 실패합니다. type 나는 메모리 관리자가 4GB 이상의 메모리를 할당하도록 강제 할 수 있다면 (포인터 값이 32 비트를 초과하여 사용하기 때문에) 런타임 오류가 발생하고 잘못된 캐스트를 더 쉽게 찾을 수 있습니다. 어떤 사람이 다른 기술을 추천 할 수 있습니까?
감사합니다. MEM_TOP_DOWN 플래그는 매우 흥미 롭습니다. 내가 일하고있는 프로젝트는 사용자 정의 디버그 할당자를 가지고 있으므로 지금은 플래그를 사용하도록 수정했다. 매우 느리지 만 이미 전환 버그를 찾고 있습니다. –