스택 VS 힙

Minsang Kim·2023년 11월 10일
0

오늘으 질문

스택, 힙 메모리란 무엇이며 어떤 차이가 있는지 비교해서 설명해주세요.

오늘으 답변

스택 메모리는 함수의 호출과 관계되는 지역변수와 매개변수가 할당되는 메모리로, 함수 호출시 할당되고 함수의 호출이 종료되면 소멸합니다. 후입선출(LIFO) 방식으로 데이터를 저장합니다. 힙 메모리는 동적으로 할당되고 해제되는 메모리로, 가비지 컬렉터가 없으면 프로그래머가 직접 관리해줘야 하는 메모리입니다. 스택 메모리는 접근이 빠르고 컴파일시에 크기가 결정되고 메모리 크기에 제한이 있어 변수를 사용자가 할당 해제할 필요가 없고, 힙 메모리는 스택 메모리에 비해 접근이 느리고 런타임시에 크기가 결정되며 메모리 크기에 제한이 없고 가비지 컬렉터를 활용합니다.

+ TMI

프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드되어야 합니다.
또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다.

코드 메모리

프로그램의 코드가 저장되는 메모리.
CPU는 코드 메모리에서 저장된 명령어를 가져가 처리한다.

데이터 메모리

전역 변수와 정적 변수와 상수가 저장되는 메모리.
프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.

스택 메모리

함수의 호출과 관계되는 지역 변수와 매개 변수가 할당되는 메모리.
함수의 호출시 할당되고, 함수의 호출이 끝나면 소멸한다.
스택 메모리는 LIFO 방식에 따라 동작한다.

힙 메모리

동적으로 할당되고 해제되는 메모리.
가비지 컬렉터가 없으면 프로그래머가 직접 관리.
new 키워드를 통해 생성한 메모리.

ex

int a = 10;					// 데이터 메모리
int b = 20;					// 데이터 메모리

int main()
{
	int i = 100;			// 스택 메모리
    
    return 0;
    
    MyClass cl;				// 스택 메모리
    cl = new MyClass();		// 힙 메모리
}

스택 VS 힙

  • 스택
    • 매우 빠른 접근
    • 컴파일타임에 크기 결정
    • 메모리 크기 제한 있음
    • 변수를 사용자가 할당 해제할 필요가 없다.
    • Only 지역 변수
    • 상대적으로 느린 접근
    • 런타임에 크기 결정
    • 메모리 크기 제한 없음
    • 가비지 컬렉션.

스택에서는 메모리 주소가, 힙에서는 실제 값이 들어간다.

profile
게임만 하다가 개발자로

0개의 댓글