C++


variable a;

a의 내부 private 변수에 직접 접근해야돼서

a의 this 포인터를 가져오고 싶음


&a는 로컬 변수 a의 주소를 가져오니 이건 아니고


클래스 variable이 사실 포인터인게 아닐까 싶어서 variable을 포인터로 변환해봄


-----

unsigned * ptr;


asm("movq %1, %0" : "=rm" ( ptr ) : "r" ( a ) );


std::cout << ptr << "\n";

-----

참고로 여기의 인라인 어셈블리는 단순히 a를 ptr에 강제로 대입하는 역할을 함.


이렇게 해보고 한번 a의 this 포인터랑 출력해서 비교했더니


0x7ffeec213d88 // a의 this 포인터

0x7ffeec213d80 // ptr

이렇게 8바이트 차이나더라

차이가 나긴 해도 &a의 값처럼 생뚱맞은 주소가 나오지 않아서

내가 생각한 방식이 그나마 맞는거같은데


차이가 나는 이유가 뭘지 궁금하다


그리고 variable은 외부 라이브러리의 클래스라서 그 내부는 건들 수 없음