我正在调整一个大的Delphi代码库到64位。在很多情况下,有些情况下指针被强制转换为/从32位值,类似于此行:德尔福64位:发现不正确的演员?
var
p1,p2 : pointer;
begin
inc(Integer(p1),10);
p2 := Pointer(Integer(p1) + 42);
我在哪里可以找到这些类型转换我与他们取代NativeInt-蒙上而不是让他们在64正确位模式。
但是我不确定我是否找到了他们。由于“整数”(如果指针值高于整数范围,“64位转换将失败”),因为只有文本搜索字符串“integer(”是不够的
由于“类型我有一个想法:如果我可以强制内存管理器分配高于4GB的内存(所以指针值使用多于32位),那我会得到运行时错误,并且可以更容易地找到错误的类型。这是可能的吗?或者任何人都可以推荐一些其他的技术吗?
谢谢,MEM_TOP_DOWN标志非常有趣。我正在工作的项目有一个自定义调试分配器,所以刚才我修改了使用标志。这是非常缓慢的,但我已经找到转换错误。 –