c&c++

#조사식#포인터 디버그중 포인터들의 값들을 알고싶을때

sieunju 2016. 11. 12. 19:55
반응형

C/C++ 을 사용하다보면, 포인터를 다룰때가 있는데 안쓰기에는 안되고, 정말 중요하지만, 학생신분에서 접근하기에는 정말 어려운 "포인터"에 대해 알아보도록 하겠습니다. 자바 같은 경우에는 포인터라는 개념이 그렇게 중요하지않습니다. (자바가 알아서 해줘서입니다.)

하지만, C++ 같은 경우에는 포인터가 정말 중요한 역활을 합니다.

직접적으로 주소값을 "직접" 전달할수있기때문에 속도가 빠릅니다.

대게 포인터를 사용하지 않고 그냥 배열로 하면 되지 않나..라는 생각을 가진 사람들이 여럿있지만, 포인터에 대해서 알고 많이 사용하다보면, 포인터가 정말 좋구나 라는걸 많이 느끼게 됩니다.

하지만, 접근하기가 힘든 이유중하나는 예를들어

byte* p = new byte[4];

이런식으로 적으면, p라는 값은  일명 "쓰레기" 값들을 가지게 됩니다. 그래서 메모리를 리셋을 시켜줘야 합니다.

그함수로는 memset 함수가 있습니다.

이 쓰레기 값들을 리셋시키기 위해서는 대게 memset(p,0,4) 를 해주면 p 포인터 배열들의 값은 0 (NULL) 이 되게 됩니다. 여기서 중요한건 4라는 숫자가 어디까지 '0' 으로 해줄까요?? 라는 뜻입니다.

여기서 유의할 사항은 sizeof 라는 연산자가 있는데, 포인터 사용할때 sizeof 연산자의 의미를 정확히 알고 사용하시는게 좋습니다. 예를 들면 sizeof(int) 면 sizeof의 값은 4로 처리됩니다. int 형은 4바이트이기 때문입니다 :D(32/64비트 컴파일러 마다 다릅니다.)

 

 

그리고 또다른 이유가 중단점을 걸어서 포인터가 어떻게 바뀌는지 보고싶을때, 일반적인 중단점으로 보는 방법은

포인터의 첫부분만 보여줍니다.

↓중단점 관련 포스팅↓

http://jsieun73.tistory.com/66

이런형식으로 앞부분만 보입니다. 그래서 이 값들이 어떻게 진행되는지 잘몰라서 많이 어려워 합니다.

이때 방법은, 조사식 또는 Watch 방법이 되겠습니다.

조사식을 어떻게 사용하는지 가르쳐 드리도록 하겠습니다.

위에 사진처럼 디버그→창→조사식(Watch)→조사식1을 클릭하시게 되면 밑에 조사식이라는 창이 새롭게 만들어집니다.

여기서 자신이 보고싶은 변수를 입력한후 변수명 끝에 ",크기 " 를 입력하시면 되겠습니다.

이런식으로 변수이름 끝에 원하는 크기를 입력하고 엔터를 누르면 포인터든 뭐든 그크기에 맞게 값들이 나오게 됩니다.

이런식으로 포인터들을 가지고 디버그하면서 값들의 변화를 보시다 보면, 포인터가 결고 어렵고,접근하기 어려운 것이 아니게 됩니다.

 

추가적으로

요렇게 생긴것이 있는데 요것은 중단점을 걸어논 부분부터 한단계씩 디버그를 해주는 버튼입니다.

즉, 중단점은 하나만 걸어주시고, 이버튼을 이용해서 한단계씩 변수들이 어떻게 변경되나 보시면 되겠습니다.

 

이상 조사식을 이용한 포인터들의 값 알아내기 포스팅을 마치도록 하겠습니다.

 

 

 

 

반응형