[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의 옵셋을 의미한다.

댓글

이 블로그의 인기 게시물

[WinAPI] 모달리스 다이얼로그 설명

[WinDbg] Debugging a stack overflow

[WinDbg] first-chance, second-chance Exception