Basic C Language

#19. Memory_structure

Srff5123 2023. 4. 26. 10:40
728x90

/*
    Memory structure
    ------------------------------------------------------------------------ High Address
    |                        스택 영역                                     |
    |                         Stack                                       | --> 메모리 크기를 컴파일러가 예측 가능 할때 사용, OS에 메모리를 받아올때 속도가 빠름
    |                           |                                         |
    . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . . . . .
    |                           |                                         |
    |                           v                                         |
    |                          Free                                       |
    |                           ^                                         |
    |                           |                                         |
    . . . . . . . . . . . . . . | . .  . . . . . . . . . . . . . . . . . . .
    |                           |                                         |
    |                         Heap                                        | --> 메모리 크기를 예측 불가능 할때
    |                        힙 영역                                       |
    ------------------------------------------------------------------------ 이 아래는 프로그램 시작전 메모리가 잡힌다
    |                           bss                                        |
    |                            |                                         |
    |            Initialized Global/Static Variables                       |
    |                        Data                                          |
    |                      데이터 영역                                      |
    ------------------------------------------------------------------------
    |                                                                      |
    |                  Program Code(Read Only)                             |
    |                         code                                         |
    |                        코드 영역                                      |
    ------------------------------------------------------------------------ Low Address

    위로갈수록 가지는 주소값이 크다
    os에따라 다를수 있다.
*/

#include <stdio.h>

void fcr(int n)// 매개변수
{

    int num2 = 2; //지역변수

}


int main()
{
    int num1 = 1; // 지역 (스택 영역)
    fcr(null); // int n할당 (스택)
    num1++;    // 지역 스택   , fcr  num2 할당 해제 소멸 
    fcr(num2); // 다시 n 할당 
    // num1 해제 , sum 해제, 
    return 0;
}

728x90