我正在調整一個大的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標誌非常有趣。我正在工作的項目有一個自定義調試分配器,所以剛纔我修改了使用標誌。這是非常緩慢的,但我已經找到轉換錯誤。 –