memory 3

#003_MFC_메모리의 구성

안녕하세요 삽잡이 입니다. 이번 시간에는 코드 영역과 데이터 영역에 대해서메모리 구조에 대해서 MFC 관점으로 알아보겠습니다. 프로그램은 명령어와 데이터의 집합으로 이루어져 있습니다.데이터를 input 받고 명령어를 통해 가공을하여 output 하는 식이죠... MFC를 두고 예를 들어보도록 하겠습니다. MFC 주요 클래스인 'CFrameWnd', 'CView', 'CDocument' 등은 모두 동적 할당 을 통해 Heap 영역에 저장됩니다. 그리고 동적 할당을 통해 생성된 객체에서 사용하는 지역 변수들은 Stack영역에 만들어지고요... WM_LBUTTONDOWN과 같은 윈도우 메시지들은 코드영역에 자리를 잡습니다.이 외에도 함수들 즉, 메소드들도 코드영역에 자리를 잡습니다. 예를 들어 View라는 클..

[삽잡이] 메모리 복사과정

메모리 복사를 하는 'memcpy' 함수, 어플리케이션의 버퍼안에 데이터를 TCP 수준의 Send 버퍼에 복사를 시켜주는 'send'함수, TCP 수준의 Recv 버퍼안에 데이터를 어플리케이션의 버퍼에 복사를 시켜주는 'recv'함수 등등 ... 데이터를 복사시키는 함수의 그림은 아래의 그림과 같다. 저장하고자하는 메모리의 주소(Target Address)에복사를 할 메모리의 시작 주소(Original Address)부터인자로 넘긴 크기(Size)만큼 복사를 해준다.

#031_WIndow_System_힙(Heap)

안녕하세요 삽잡이입니다. 이번시간에는 가상 메모리에 대한 얘기를 이어서 해보려 합니다. 물리메모리에 두개의 Application A, B가 있다고 해보겠습니다.실제 A 어플리케이션에서 사용할 수 있는 주소는 가상 주소 공간밖에 없습니다.가상 주소 공간의 메모리가 실제 할당이 되면, 물리 메모리에 똑같이 할당이 되게 됩니다.실제 메모리와 매핑되는 메모리 영역을 우리는 커밋(확장)영역이라고 부릅니다. 그리고, 실제 메모리 영역에 할당이 안되어있으며, 얼마든지 다른 물리 메모리 영역에 할당할 수 있도록 만든 메모리즉, '내 입장에서는 연속적인 메모리이지만, 실제 물리 메모리에서는 연속적이지 않아도 되는 영역'을예약(리저브)영역이라고 합니다. 마지막으로 전혀 예약도 되지 않은 영역을 자유 영역이라고 하지요.....