heap 2

[컴파일러 이론] 13. Memory Allocation

메모리의 구조를 다시 간단히 정리해보자. 메모리 안에 code와 data가 같이 저장되어있다.data의 stack부분을 자세히 보면 이전에 알아봤던 AR을 단위로 저장된다.stack과 code 사이에는 static data를 저장하는 공간도 있다.프로그램 동작 중에 동적으로 생성되는 것들은 heap에 저장된다. C, C++ 코딩 시에 메모리 free 등을 안해서 에러가 났던 경험이 한번씩 있을 것이다.java,python 같은 언어는 garbage collection이라는 기능이 있어 알아서 이런 부분을 처리해준다.이렇게 자동으로 메모리를 관리해주는 법을 알아보자.Object Reachability유저가 free를 명시적으로 하지 않았을 때, 언제부터 이게 정말로 필요하지 않을지 판단해야한다.아래 그림에..

CS/컴파일러 2026.01.06

[컴파일러 이론] 8. Code Generation - Activation Record, stack, heap

이전 글에서도 몇 번 봤던 그림을 다시 보고 시작해보자.이전 글까지 총 7개의 글에 걸쳐 lexical → Syntax → Semantic 분석을 알아봤었다.이제는 Code Generation과정에 대해 알아보자. 컴파일러의 역할컴파일러는 단순히 사람이 작성한 코드를 아무생각없이 기계어로 바꿔주는 것이 아니다.데이터가 저장공간에 어떻게 저장되고 사용될지를 관리하기도 한다.또 더 효율적인 코드가 되도록 코드를 바꿀 수도 있다.데이터 저장 위치 결정소프트웨어적인 관점에서 CPU는 연산장치, 레지스터, 메모리로 나눠서 이해해볼 수 있다.여기서 우리는 데이터를 레지스터에 저장할지, 메모리에 저장할지 결정해야한다.일반적으로 전역 변수나 static변수는 메모리에 저장한다.로컬 변수들 중에서도 배열, 구조체 같은 ..

CS/컴파일러 2025.12.27