[WinAPI] (object *)0의 의미
구조체 레이아웃이 아래와 같이 되어 있는 경우에
typedef struct _TEST_STRUCT_
{
DWORD a;
DWORD b;
DWORD c;
DWORD d;
} *PTEST_STRUCT, TEST_STRUCT;
DWORD tt = ((TEST_STRUCT *)0)->c; // mov eax,dword ptr ds:[00000008h]
위의 구문과 아래의 구문을 비교해 보자. 차이즌 앰퍼센드이다(&)
DWORD tt = (DWORD)( &((TEST_STRUCT *)0)->c ); // dword ptr [ebp-18h],8
즉 구조체 레이아웃에서 c의 옵셋을 의미한다.
typedef struct _TEST_STRUCT_
{
DWORD a;
DWORD b;
DWORD c;
DWORD d;
} *PTEST_STRUCT, TEST_STRUCT;
DWORD tt = ((TEST_STRUCT *)0)->c; // mov eax,dword ptr ds:[00000008h]
위의 구문과 아래의 구문을 비교해 보자. 차이즌 앰퍼센드이다(&)
DWORD tt = (DWORD)( &((TEST_STRUCT *)0)->c ); // dword ptr [ebp-18h],8
즉 구조체 레이아웃에서 c의 옵셋을 의미한다.
댓글
댓글 쓰기