단순히 어떠한 데이터를 휘발성으로 임시보관하고 있는 장소로만 알고 있으며 정확히 ‘메모리가 무엇인가’ 또한 ‘메모리가 어떤 일을 수행하는가’에 대해서 심층적으로 이해하기 위해 학습하게 되었습니다.

메모리

메모리 설명

코드 예제

// Code - 작성한 모든 코드
class Yoonds {
    
    // Data - 전역 변수 선언(외부에서 접근 가능)
    var dataArea: Int = 5
    
    func addNum(a: Int) -> Int {
				let b = 10 // Stack 영역
        dataArea = 20 // Data 영역에 존재하는 변수이기에 접근 가능
        /*
         전달받은 a값을 저장하기위해 스택 프레임 내 임시 메모리 생성
         리턴 타입이 있는 관계로 리턴 값을 임시 저장할 스택 프레임 내 임시 메모리 생성
        */
        return a + b
    }
    
   b = 20 // error b는 공유 불가한 Stack영역에 존재하기에 접근 불가
    
}

/*
 인스턴스 생성 시 메모리 할당 (Heap 영역)
 해당 메모리 주소는 Stack 영역에서 소유
*/
let yoonds = Yoonds() // 메모리 주소 예: e123d
/*
 메모리 주소는 Heap영역의 메모리 주소
 e123d를 주소 자체를 소유하는 것은 Stack영역
*/

// addNum 함수 실행 시 해당 함수를 Stack영역 내 스택프레임 생성
yoonds.addNum(a: 5) // 15