게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
프로그램 메모리의 헥스값을 c언어의 코드로 해석할 수 있는 방법은 없나요
게시물ID : programmer_19840짧은주소 복사하기
작성자 : ㅜ_ㅠ
추천 : 0
조회수 : 1588회
댓글수 : 9개
등록시간 : 2017/02/22 21:32:42
아래의 코드를 디버그로 실행해서 포인터 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;
}


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호