Tuuna Computer Science

포인터와 배열의 차이 (어셈코드) 본문

C language

포인터와 배열의 차이 (어셈코드)

GuTTe 2018. 6. 9. 20:00


c 로 작성된 코드다. 

str를 포인터형으로 선언하여 문자열 " this_is_pointer"를 가리키게 하고 

buffer를 배열로 선언하여 hello world를 선언했다. 



이렇게 완성된 코드를 올리디버거로 디버깅 과정에서 

포인터형으로 선언한 곳에서는 OFFSET 00404000처럼 메모리 덤프 주소를 가리키는것을 볼 수 있당.

그리고 배열로 선언한 부분에서는 값을 직접 메모리에 넣는 것을 볼 수 있다. 

즉, 배열은 그냥 주소가 아닌 문자열 데이터가 들어간다. 

그리고 LEA eax, [esp+1c]로 값들이 저장된 스택의 주소를 따온다. 

의문점 : printf함수를 호출하는 부분에서 OFFSET 004011를 확인할 수 있다. 

그럼 printf안에 들어있는 문자열들을 포인터형이라고 말할 수 있는가?

Answer : 그렇다 printf함수 내부에서도 포인터의 개념이 쓰인다!


Comments