C#

6. C#의 메모리 관리

지니 2017. 1. 28. 11:31
반응형

인터넷강의 보고 따라하지만.. 강의 내용대로 안되서 다시 정리해 봅니다.


배우면서 쓰는글이기 때문에 정답이 아닐수 있습니다.




C, C++ 과 C#의 차이점 중 하나는 C#은 자동으로 메모리관리를 해준다는게있다.



1. Ctrl + Shift + N 으로 창을 띄우고


콘솔 어플리케이션을 선택해서 프로젝트를 만들자



그다음 모두 지우고




위에 처럼 타이핑을 쳐봅시다 그리고 12 번째 라인에 break point 를 지정해봅니다.


(브레이크 포인트는 위 사진의 빨간 점 부분을 클릭하면 지정됩니다.)




그다음 디버깅 모드로 실행합니다.


 그 후 , Debug -> Windows -> Memory 클릭합니다.


(만약, 메모리메뉴가 보이지 않는다면 , Tools -> Import and Export Setting -> Reset All Setting 을 해줍니다. (필자의 경우 메모리가 안보여서 ㅠㅜ 세팅을 초기화 해주었다.) )




그리고 위 이미지 처럼 address &mTmp 를 입력하면 자동으로 값이 바뀌어 이동한다.


10진수 

16진수 

10 

0a 


0a로 이동된 모습이 보인다.



------------------------------------------------------------------


정리>>


메모리를 닷넷 프레임 워크의 가비지 컬렉터가 defragment 를 수행한다.


그래서 , 하나의 변수가 위치한 메모리상의 주소값이 이제는 더이상 고정적이지 않다.(닷넷이 해주니까!)


그래서 , 주소를 연산하는 포인터를 쓸수도 있지만 unsafe 한 방법을 사용을 해야한다.(닷넷이 해주는데 굳이 할려고하니까!)














반응형