티스토리 뷰

CS/OS, DB

Stack, Heap... 메모리에 관해

pikabite 2022. 2. 14. 22:47

한 줄 요약 : 운영체제로부터 Code, Data, Stack, Heap 영역을 할당받으며 소스코드는 code 영역, global 변수는 data에 저장되고 Stack 영역은 컴파일시 크기가 결정되며 지역변수,parameter등을 관장하고, heap은 사용자 메모리로 instance등을 할당할 때 쓴다



Code 영역

  • 메모리에 실행 code가 저장되는 공간으로, Text 영역이라고도 함
  • Cpu가 Access하여 하나씩 실행 함

Data 영역

  • 전역 (global) 변수와 정적 변수 (static) 가 저장되는 공간
  • 프로그램의 시작시 할당되고, 종료시 소멸

Stack 영역

  • 지역변수와 매개변수가 저장되는 공간
  • 함수의 실행/종료시 할당/해제
  • 스택영역은 후힙선출 (LIFO) 말그대로 stacking
  • stack에 저장 되는 함수의 호출정보를 stack frame
  • 컴파일타임에 크기가 결정 됨

Heap 영역

  • 사용자가 직접 관리하는 메모리이고 또 그렇게 직접 관리해야만 하는 메모리
  • 런타임에 가변적으로 메모리를 동적 할당/해제를 반복 함
  • malloc() 또는 new 키워드를 통해 메모리 할당

// 전역변수는 Data 영역에 저장 된다.
int gloglo = 123;

// 매개변수 parameter는 stack에 저장 된다.
int blahblah (int parama, int paramb)
{
    return parama + paramb;
}

int main() {
    // 지역변수도 stack에 저장 된다.
    string boo;

    // malloc 등으로 할당 된 메모리는 heap 영역에 존재한다
    int* pVal = (int*)malloc(sizeof(int));

}

reference
[1] : (https://junghyun100.github.io/%ED%9E%99-%EC%8A%A4%ED%83%9D%EC%B0%A8%EC%9D%B4%EC%A0%90/)
[2] : https://all-young.tistory.com/17

'CS > OS, DB' 카테고리의 다른 글

데이터베이스 트랜잭션과 ACID  (0) 2022.04.04
NoSQL이란? NoSQL 종류 (MongoDB, Redis, Cassandra)  (0) 2022.04.02
프로세스와 스레드의 차이  (0) 2022.02.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함