2

ウィンドウのポインターアドレスを定義しました

#ifdef _WIN64 

    typedef uint64_t unit_pointer;

#   define PRINTF_PTR "%I64x"

#else

    typedef unsigned long unit_pointer;

#   define PRINTF_PTR "%lx"

#endif

TEST *obj = &test_obj;

char obj_pointer_add[50]; 

sprintf(obj_pointer_add, PRINTF_PTR, (unit_pointer)obj);

obj_pointer_add を知っているので、obj ポインターを別の場所に再作成したいと思います。obj_pointer_add を unit_pointer に戻すにはどうすればよいですか?

unit_pointer point_address= (unit_pointer)obj_pointer_add; (ERROR CONVERTING)

TEST *new_obj = reinterpret_cast<TEST *>(point_address); (fail because of pointer_address wrong)

ありがとう

4

2 に答える 2

0

sscanf同じ形式を使用して、変数に入れることができます。

注:これは、まったく同じプロセスでのみ行うことができます。したがって、ポインタを保存してプログラムを再起動すると、保存されたポインタを再び使用することはできません。また、同じプロセスでポインターを渡すために使用する場合、実際のポインターを使用するのではなく、文字列として使用する必要があるのはなぜですか?

于 2013-03-14T09:19:44.213 に答える