info8995 님의 블로그

9일차(메모리 정리,스택과 힙) 본문

TIL(Today I Learned)/C++

9일차(메모리 정리,스택과 힙)

info8995 2024. 12. 27. 20:32

 

메모리의 구조

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

컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공합니다. 이 중 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 아래와 같습니다:

  1. 코드(Code) 영역: 실행할 프로그램의 명령어가 저장됩니다.
  2. 데이터(Data) 영역: 전역 변수와 정적 변수가 저장됩니다.
  3. 스택(Stack) 영역: 함수 호출과 관계된 지역 변수 및 매개변수가 저장됩니다.
  4. 힙(Heap) 영역: 동적으로 할당된 메모리가 저장됩니다.

운영체제가 제공하는 메모리 공간은 이러한 구조로 나뉘며, 각 영역은 서로 다른 용도와 특징을 가집니다.

 

출처:https://www.tcpschool.com/c/c_memory_structure

 

  • 메모리 관리의 중요성
    • 메모리 관리가 제대로 이루어지지 않으면 성능 저하, 메모리 누수, 데이터 손상 등의 문제가 발생할 수 있습니다.
    • 메모리 구조(스택과 힙)와 관리 기법을 이해하고 적절히 활용하는 것이 필수입니다.

 

  • 스택(stack) 메모리
    • 특징
      • 함수 호출과 관련된 지역 변수와 매개변수가 저장되는 영역입니다.
      • 자동으로 메모리를 할당하고 해제하여 사용자 관리가 필요 없습니다.
      • LIFO(Last-In, First-Out) 방식으로 동작하며, 푸시(push)로 데이터 저장, 팝(pop)으로 데이터 인출합니다.
    • 장단점
      • 장점: 빠른 액세스, 메모리 단편화 없음, 변수 해제 불필요.
      • 단점: 크기 제한, 지역 변수만 사용 가능, 변수 크기 조정 불가.
  • 힙(heap) 메모리
    • 특징
      • 사용자가 직접 메모리를 동적으로 할당하고 해제해야 합니다.
      • 스택과 반대로 낮은 주소에서 높은 주소 방향으로 메모리를 할당합니다.
    • 장단점
      • 장점: 전역적으로 접근 가능, 메모리 크기 제한 없음.
      • 단점: 느린 액세스, 메모리 관리 필요, 조각화 위험.

 

 

'TIL(Today I Learned) > C++' 카테고리의 다른 글

12일차(간단한 도서관시스템)  (0) 2025.01.02
11일차(컨테이너 벡터)  (0) 2024.12.31
10일차(오버로딩, 오버라이딩)  (0) 2024.12.30
7일차(class)  (0) 2024.12.24
6일차(변수, 배열, 함수)  (1) 2024.12.23