Как говорит blastfurnace
, он выполняет поиск байтов для заданного значения указателя.Эквивалент int
будет иметь вид:
bool GC_search_memaddr (void* high_add, void* low_add, int search_add)
{
int * gc_ptr_to_int;
void * gc_temp;
gc_temp = high_add;
while( gc_temp > low_add )
{
gc_temp = gc_temp - 1;
gc_ptr_to_int = (int *)gc_temp;
if ((*gc_ptr_to_int) == search_add)
return True;
}
return False;
}
Хотя gc_temp
на самом деле должен иметь тип char *
, и он должен использовать memcpy()
для учета проблем с порядком байтов, поэтому он должен выглядетькак:
bool GC_search_memaddr (void* high_add, void* low_add, void *search_add)
{
void *gc_ptr;
char *gc_temp = high_add;
while (gc_temp > low_add)
{
gc_temp--;
memcpy(&gc_ptr, gc_temp, sizeof gc_ptr);
if (gc_ptr == search_add)
return True;
}
return False;
}