[C++] 메모리 구조 (Stack/Heap)

chooha·2025년 9월 29일

C++

목록 보기
8/22

📚 C++ 메모리 구조: 스택 vs 힙

🔸 스택 메모리 (Stack Memory)

구조와 동작

  • 함수 단위로 스택 프레임이 생성됨
  • 함수 호출 시 스택에 쌓이고, 함수 종료 시 자동으로 제거됨
  • 지역 변수, 매개 변수, 반환 주소, this 포인터(필요시)등이 포함됨

특징

  • 객체가 스택에 할당될 때는 멤버 변수 공간만 할당됨
  • 멤버 함수는 코드 영역에 저장되어 모든 객체가 같은 함수 주소를 공유함

🔸 힙 메모리 (Heap Memory)

C++에서의 사용법

  • malloc, calloc 함수 사용 금지함 (객체 생성 불가능)
  • new/delete 연산자를 사용함
  • delete를 안 하면 메모리 누수가 발생함

메모리 누수 방지법

  • 스마트 포인터 사용을 권장함
  • 배열의 경우 vector 컨테이너를 사용함

⚖️ 성능 및 특성 비교

구분스택
할당/해제 속도빠름 (top에서만 작업)느림 (복잡한 관리 필요)
메모리 크기제한적 (stack overflow 위험)큰 메모리 할당 가능
할당 방식정적 할당동적 할당
생명주기함수 스코프에 의존프로그래머가 직접 관리

💡 힙 메모리의 장점

힙 메모리는 다음 세 가지 주요 문제를 해결함
1. Life Cycle - 함수 스코프를 벗어나도 데이터 유지함
2. Large Size - 스택 오버플로우 없이 대용량 데이터 처리함
3. Dynamic Allocation - 런타임에 필요한 만큼 메모리 할당함


< 참고 자료 >

코드없는 프로그래밍
힙 메모리에 대한 모든 것

0개의 댓글