들어가며

C++에서 메모리 관리는 단순히 new와 delete를 사용하는 수준에서 끝나지 않습니다.
특히 게임 엔진이나 고성능 시스템을 직접 구현하다 보면 메모리를 언제 확보하고, 객체를 언제 생성하며,
이미 확보한 메모리를 어떻게 재사용할 것인지까지 고민해야 합니다.
이 시리즈는 C++ Allocator, Vector 내부 구조, placement new를 순서대로 살펴보면서
게임 엔진에서 메모리 관리가 왜 중요한지 이해하기 위한 목적으로 작성했습니다.
시리즈 소개
이 시리즈에서는 C++의 메모리 관리 개념을 단순 문법 설명이 아니라 실제 컨테이너 구현과 게임 엔진 구조 관점에서 살펴봅니다.
- 메모리 할당과 객체 생성의 차이
- Allocator가 필요한 이유
- Vector 내부에서 메모리가 관리되는 방식
- placement new가 사용되는 이유
- 게임 엔진에서 Custom Allocator가 중요한 이유
시리즈 목록
1. C++ Allocator의 기본 원리와 실무에서의 활용
첫 번째 글에서는 Allocator가 무엇인지, 왜 STL 컨테이너가 Allocator 구조를 지원하는지 살펴봅니다.
단순히 메모리를 할당하는 기능이 아니라, 메모리 관리 정책을 컨테이너와 분리하기 위한 구조라는 점을 중심으로 정리했습니다.
- Allocator의 기본 개념
new/delete와 Allocator의 차이- STL 컨테이너에서 Allocator가 사용되는 이유
- 게임 엔진에서 메모리 할당 비용이 문제가 되는 이유
- Custom Allocator가 필요한 상황
C++ Allocator의 기본 원리와 실무에서의 활용 읽기
2. C++ Allocator를 사용해 동적 배열 Vector 개선하기
두 번째 글에서는 직접 구현한 Vector에 Allocator 개념을 적용해봅니다.
Vector는 단순한 동적 배열처럼 보이지만, 내부적으로는 메모리 확보, 객체 생성, 객체 파괴, 메모리 해제를 구분해서 처리해야 합니다.
- 기존 Vector 구현의 한계
- Capacity와 Size의 차이
- 재할당 과정에서 발생하는 문제
- Allocator를 이용한 메모리 관리 구조
- 게임 엔진 스타일 컨테이너 구현 방향
C++ Allocator를 사용해 동적 배열 Vector 개선하기 읽기
3. placement new는 왜 필요할까?
세 번째 글에서는 placement new가 왜 필요한지 살펴봅니다.
일반적인 new는 메모리 할당과 객체 생성을 함께 처리하지만,
실제 컨테이너나 게임 엔진 메모리 시스템에서는 이 두 과정을 분리해야 하는 경우가 많습니다.
- 일반
new의 동작 방식 - 메모리 확보와 객체 생성의 차이
- placement new의 기본 사용법
- Allocator와 placement new의 관계
- Vector, Memory Pool, 게임 엔진 메모리 시스템에서의 활용
이 시리즈를 통해 이해할 수 있는 것
이 시리즈의 핵심은 C++ 문법을 하나씩 외우는 것이 아니라,
게임 엔진이 왜 직접 메모리 구조를 관리하려고 하는지 이해하는 것입니다.
Allocator, Vector 내부 구조, placement new는 서로 따로 떨어진 개념이 아닙니다.
이 세 가지는 결국 게임 엔진 메모리 구조를 이해하기 위한 기반이 됩니다.
- Allocator는 메모리 관리 정책을 분리하기 위해 사용됩니다.
- Vector는 연속된 메모리와 객체 수명 관리를 이해하기 좋은 컨테이너입니다.
- placement new는 이미 확보한 메모리에 객체를 생성하기 위해 사용됩니다.
추천 학습 순서
처음 읽는다면 아래 순서대로 보는 것을 추천합니다.
Allocator의 기본 개념을 먼저 이해한 뒤, Vector 구현에 적용해보고,
마지막으로 placement new를 통해 메모리 확보와 객체 생성이 어떻게 분리되는지 확인하는 흐름입니다.
- C++ Allocator의 기본 원리와 실무에서의 활용
- C++ Allocator를 사용해 동적 배열 Vector 개선하기
- placement new는 왜 필요할까?
다음으로 이어질 수 있는 주제
이 시리즈는 게임 엔진 메모리 구조를 이해하기 위한 출발점에 가깝습니다.
이후에는 Memory Pool, Cache Locality, Fragmentation, Data-Oriented Design 같은 주제로 자연스럽게 확장할 수 있습니다.
- Memory Pool은 왜 필요할까?
- 메모리 단편화는 왜 문제가 될까?
- Cache Locality는 게임 성능에 어떤 영향을 줄까?
- std::vector는 왜 빠를까?
- 게임 엔진은 왜 Custom Allocator를 사용할까?