97, 1/5 회원가입  로그인  
   hjt7942
   1.png (326.7 KB), Download : 28     [오른쪽 버튼 눌러 다운 받기]
   2.png (114.5 KB), Download : 28     [오른쪽 버튼 눌러 다운 받기]
   [초보] 리턴어드레스 질문입니다

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=58 [복사]




시스템네트워킹 리눅스 기초편에 리턴어드레스가 저장되는 메모리 위치때문에 글을 올립니다..
운영체제 윈7 (64bit)
컴파일러 비주얼 스튜디오 2010

질문 1. 왜 int형(4바이트) 자료를 동시에 선언했는데
메모리 주소의 차이가 4바이트가 아닌 6바이트 인가요?
(강의내에서는 동시에 선언하면 4바이트 주소값이 차이가 나던데 왜
저는 6바이트차이가 나는 건가요? 나머지 2바이트에 다른무엇인가가 들어가는건가요?)

질문 2. 리턴어드레스 값 또한 12바이트가 아니라 16바이트를 먹는데 왜그런가요?
그리고 제가 리턴 어드레스값 근처값들을 검색해보앗는데... 되돌아갈 라인주소값을 찾을수가 없습니다..ㅠㅠ

(공부한 내용대로라면 0043FA38에 리턴어드레스 위치값이 있어야되는데 그렇지가않네요;.. 왜그런가요?)

꼭 좀 알려주세요 ㅠㅠ

  Hit : 3997     Date : 2013/05/19 08:29



    
kumi123 1. 4바이트는 32bit 컴파일러 기준입니다.. VC2010은 64bit 컴파일로 이므로, 6바이트를 할당하는 것 같습니다. ( 물론, 꼭 6바이트는 아님, 컴파일러마다 다름).. dev cpp나 VS xp이전 버전으로 하면, 4바이트로 뜰겁니다.

2. 아주 오랜된 컴파일러가 아닌 이상은.. 선언된 자료형 다음에 4바이트xn 단위로 더미값이라는 것을 넣습니다..
여기서는 그게 4바이트 갔습니다...
한, 예를 들자면, char a[10] 이라는 값은 이론대로라면, 9바이트+널 이지만, 10바이트 넘게 작성이 가능합니다.
2013/05/20  
dontknow 0x43fb20과 0x43fb14 의 차이는 12입니다.(6이 아닙니다)
32bit, 64bit의 차이로 발생하는 것이 아니라 dummy 바이트를 넣기 때문입니다.
dummy바이트가 발생하더라도 변수와의 거리는 4의 배수차이가 납니다.
2013/07/22