bshc.log
로그인
bshc.log
로그인
heap VS stack
About_work
·
2024년 5월 30일
팔로우
0
0
cs 기초
목록 보기
34/38
컴퓨터 프로그래밍에서 힙(heap)과 스택(stack)은 메모리를 할당하고 관리하는 두 가지 주요 방식
스택 (Stack)
스택은 프로그램이 자동으로 관리하는 메모리 영역입
함수 내부에서 선언된 변수들은 스택에 저장
스택은 매우 빠른 액세스 속도
를 가지며,
프로그램이 함수를 호출할 때마다 해당 함수의 변수들을, 스택에 푸시(push)하고 함수가 끝나면 팝(pop)하는 방식으로 동작
이는 매우 체계적이고 자동적으로 이루어지기 때문에 개발자가 별도로 관리할 필요가 없습니다.
특징:
속도가 빠름
메모리 사용이 자동으로 관리됨
함수 호출과 깊이에 따라 확장됨
고정된 크기를 가짐 (오버플로우가 발생할 수 있음)
힙 (Heap)
힙은 개발자가 수동으로 관리해야 하는 메모리 영역
필요할 때마다 메모리를 할당하고, 사용이 끝나면 해제해야 합니다.
이는 스택에 비해 더 유연하지만, 관리가 복잡하고 속도가 느릴 수 있습니다.
힙은 동적 메모리 할당에 사용되며, 프로그램 실행 중에 크기가 변할 수 있는 데이터 구조에 주로 사용됩니다.
특징:
속도가 스택에 비해 상대적으로 느림
메모리 사용을 수동으로 관리해야 함
크기가 동적으로 변할 수 있음
메모리 누수, 단편화 등의 문제가 발생할 수 있음
비교
속도
:
스택은 힙보다 빠릅니다. 스택은 메모리의 할당과 해제가 명확한 규칙에 따라 일어나기 때문에 관리가 쉽고 빠릅니다.
크기 제한
:
스택은 사이즈가 제한적이며, 너무 많은 메모리를 사용하려 하면 스택 오버플로우가 발생할 수 있습니다.
반면, 힙은 사용 가능한 메모리 한도 내에서 크게 확장될 수 있습니다.
메모리 할당/해제
:
스택은 함수 호출과 함께 자동으로 메모리가 할당되고 함수가 끝나면 해제됩니다. 힙은 개발자가 직접 할당하고 해제해야 하므로 오류가 발생하기 쉽습니다.
이러한 차이점 때문에, 일반적으로 빠르고 일시적인 로컬 변수는 스택에 할당하고, 프로그램 전반에 걸쳐 사용되거나 크기가 변할 수 있는 데이터는 힙에 할당합니다.
이는 각각의 장단점을 고려한 선택입니다.
About_work
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.
팔로우
이전 포스트
DDNS?
다음 포스트
blocking I/O ?
0개의 댓글
댓글 작성