ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • swift - Memory Basics
    swift 2021. 1. 13. 09:36

    1Byte : -128 ~ 127 , 0 ~ 256

     

     

    Data Bit : 실제 값을 저장하는 비트

     

     

    0이면 양수 1이면 음수

     


    운영체제는 프로그램이 시작되면 메모리공간을 할당하는데

    사용 용도에 따라 다음과 같이 구분한다.

    Code : 기계어로 번역된 프로그램 코드가 저장

     

    Data : 정적변수와 전역변수가 저장된다. 프로그램이 시작되면 생성되었다가 프로그램이 종료되면 제거

     

     

    Stack : 지역변수, 파라미터와 리턴 값 등이 저장된다. 스텍은 함수 호출과 관련이 있는데

     

     함수가 호출되면 함수에서 사용하는 모든 값을 저장하는 메모리 공간이 자동으로 생성된다. 이걸 stack frame이라고 한다.

     

     함수의 실행이 종료되면 stack에서 자동으로 제거되고 다른 함수에서 메모리를 다시 사용할 수 있게 된다.

     

     

    Heap : 동적으로 할당된 데이터가 저장된다. 다른 영역은 할당할 공간의 크기를 예상할 수 있지만 힙은 동적으로 할당되는 특성때문에

     

     예측하기 어렵다. 생성시점과 제거시점이 정해져 있지 않기 때문에 직접 코드를 통해 생성하고 제거해야 한다.

     

    그렇지 않으면 프로그램이 종료될때까지 종료되지 않기 때문에 메모리가 낭비 되는데 이걸 메모리 누수(Memory leaks) 라고 한다.

     


    Value Type과 Reference Type의 비교

    값 형식은 stack에 저장된다. 더 이상 사용되지 않는 경우 자동으로 제거 되기 때문에 메모리 관리가 쉽다.

     

    반면 참조 형식은 실제 값을 heap에 저장하고 heap메모리 주소를 stack에 저장한다. 실제 값에 접근할때는 항상 stack에 있는 주소를 통해

     

    접근한다. 만약 더 이상 사용하지 않는다면 stack과 heap의 메모리리 공간을 완전히 제거해서 메모리 누수를 방지하는 것이 좋다.

    댓글

Designed by Tistory.