기본적인 컴퓨터 구조 내부 설명을 들을 때 주로 스택과 힙에 대해 많이 듣게 된다 그리고 실제로 많은 어플리케이션이나 서버에서 생기는 문제들이 힙영역의 처리가 제대로 되지 않아 생기는 문제들이라고 한다. (자바나 C#같은 고급언어들도 마찬가지이다. 메모리를 알자)


지금은 간단히 적고 나중에 추가 업로드 


메모리 구조와 운영체제 

- 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드 되어야 함

- 프로그램에서 사용되는 변수들을 저장할 때도 메모리를 사용

- 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공 


프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지로 요약

1. 코드 영역

2. 데이터 영역

3. 스택 영역

5. 힙 영역


코드영역 

- 메모리의 코드영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부른다 

  CPU는 코드 영역에 저장된 명령어 하나씩 가져가서 처리하게 된다 

 상수는 여기에 포함되며 컴파일된 기계어가 저장되어 프로그램이 끝날 때 소멸


데이터 영역

- 메모리의 데이터 영역은 프로그램의 전역변수와 정적(static)변수가 저장되는 영역

  데이터 영역은 프로그램의 시작과 함께 할당되며 프로그램이 종료되면 소멸 


스택 영역 

- 메모리의 스택 영역은 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 영역 

  스택영역은 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸 

  이렇게 스택영역에 저장되는 함수의 호출 정보를 스택 프레임이라고 함 

  컴파일 시에 크기가 결정된다


힙 영역

- 사용자가 직접 관리할 수 있는 그리고 C나 C++에서는 직접 생성과 소멸을 주관하고 C# 이나 Java에서는 생성관 주관한다   

  힙 영역은 메모리 공간이 동적으로 할당되고 해제되고 메모리의 낮은 주소에서 높은 주소의 방향으올 할당된다

  런타임시에 크기가 결정된다. 


출처: http://tcpschool.com/c/c_memory_structure

       https://blog.perfectacle.com/2017/02/09/c-ref-004/

+ Recent posts