Sto lavorando per adattare una grande base di codice Delphi a 64-bit. In molti casi ci sono linee in cui i puntatori sono pressofuso da/per valori a 32 bit simile a questo:Delphi 64-bit: trovare cast errati?
var
p1,p2 : pointer;
begin
inc(Integer(p1),10);
p2 := Pointer(Integer(p1) + 42);
Dove posso trovare questi calchi li ho sostituiti con nativeint-getta, invece di farli corretta 64- modalità bit.
Tuttavia non sono sicuro di averli trovati tutti. A volte i cast sono più sottili, quindi solo la ricerca del testo per la stringa "intero" non è sufficiente
Poiché il "numero intero" ("casts" non riuscirà a 64-bit se il valore del puntatore è sopra l'intervallo dell'intero tipo I ho un'idea: cosa succede se potrei forzare il gestore della memoria ad allocare memoria superiore a 4gb (quindi i valori del puntatore utilizzano più di 32-bit)? Allora otterrei errori di runtime e posso trovare più facilmente i cast che sono sbagliati. È possibile o qualcuno può raccomandare qualche altra tecnica?
Grazie, il flag MEM_TOP_DOWN è molto interessante. Il progetto su cui sto lavorando ha un allocatore di debug personalizzato, quindi ora ho fatto la modifica per usare la bandiera. È molto lento ma sto già trovando bug di conversione. –