아래의 코드를 디버그로 실행해서 포인터 p1,p2가 생성될때 메모리를 뜯어보니까
p1은 0x773228 p2는 0x773248인데
메모리의 hex값은
0x773228: 68 ab ab ab ab ab ab ab|ab fe ee fe ee fe ee fe h««««««««þîþîþîþ
0x773238: 00 00 00 00 00 00 00 00|3f c8 f9 00 9f 31 00 1f ........?Èù.1..
0x773248: 68 ab ab ab ab ab ab ab|ab fe ee fe ee fe ee fe h««««««««þîþîþîþ
0x773258: 00 00 00 00 00 00 00 00|19 c8 fa 25 9f 31 00 00 .........Èú%1..
이더군요.
포인터p1,p2가 생성될때 그 포인터가 가르키는 메모리 주소의 헥스값이 68 ab ab ab ab ab ab ab|ab fe ee fe ee fe ee fe 로 동일한걸로 보면
아무래도 같은 Person 클래스의 코드를 나타내는 p1과 p2의 헥스값으로 생각되는데...
물론 p1,p2는 현재 함수만 가지고 있고 맴버변수는 아무것도 없어서 디버거에서는 값이 아무것도 나오지 않습니다만 실제 메모리에서는 저 헥스값을 가지고 있는걸로봐서는 이 헥스값을 c코드를 변환할 수 있을거 같은데요.
혹시 저런 메모리주소에 있는 헥스값을 c코드로 변경하는 방법을 있다면 꼭 가르쳐 주셨으면 좋겠네요.
#include <iostream>
using std::cout;
using std::endl;
class Person{
public:
Person* GetThis(){
return this;
}
};
int main(){
cout<<"*****p1의 정보*****"<<endl;
Person *p1=new Person();
Person *p2=new Person();
Person p3;
cout<<"포인터 p1:"<<p1<<endl;
cout<<"p3의 주소값:"<<&p3<<endl;
cout<<"p1의 this:"<<(*p1).GetThis()<<endl;
cout<<"******p2의 정보********"<<endl;
cout<<"포인터 p2:"<<p2<<endl;
cout<<"p2의 this:"<<(*p2).GetThis()<<endl;
return 0;
}