티스토리 뷰
메모리 풀 이란?
C에서는 malloc C++에서는 new를 통한 데이터 할당이 아닌, 큰 사이즈의 메모리 블록을 할당하여 malloc/new 연산자와 유사한 메모리 동적할당을 가능하게 해주는 것.
왜 메모리 풀을 사용해야 하나요?
malloc/new 연산자는 다양한 블록 사이즈 때문에 단편화를 유발하고 파편화 된 메모리는 사용할 수 없게된다. 이를 극복한 방법이 메모리 풀 이다. 또한 malloc/new 연산자를 통한 데이터 할당은 시스템 콜을 하기 때문에 발생하는 오버헤드도 있기 때문에 메모리 풀을 사용하는 것이 좋다.
또한 풀 내에 할당된 오브젝트들을 해제할때 한번의 조작으로 모든 오브젝트의 해제가 가능하다.
메모리 풀의 종류
고정 메모리풀과 가변 메모리풀이 있다.
고정 메모리 풀
반환된 메모리를 효율적으로 재사용 가능. 구현이 쉽다. 캐시 효율이 좋다.
메모리 풀의 동작 방식
- 풀들로부터 메모리를 할당. 함수는 필요한 블록이 적합한 풀을 결정. 풀의 모든 블록들이 이미 예약되어 있다면, 함수는 그 다음으로 큰 풀에서 찾기를 시도한다. 할당된 메모리 블록은 핸들에 의해서 표현된다.
- 할당된 메모리에 대한 액세스 포인터 접근.
- 이전에 할당되었던 메모리 블록 해제.
- 풀과 메모리 블록 인덱스는 핸들에 대응되는 블록에 빠르게 접근할 수 있게 해주고, 이미 해제된 메모리 블록의 핸들을 감지하도록 해준다.
10000000개의 메모리를 할당 했을 시 메모리 풀 사용/미사용 의 차이
'공부 > C++' 카테고리의 다른 글
[채팅서버 만들기 C++] - 01 (0) | 2023.04.05 |
---|---|
[C++] 메모리 풀 2 (0) | 2023.03.30 |
동적 라이브러리 (0) | 2022.03.27 |
C++ 복습) 상속 (0) | 2021.11.24 |
C++ 복습) const와 레퍼런스(&) (0) | 2021.11.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 탐욕법
- 힙
- C++
- Heap
- BFS
- LV2
- sort
- 고득점kit
- 프로그래머스
- 완전탐색
- 너비우선탐색
- 정렬
- level3
- UE5
- Unreal 5.1
- 고득점 Kit
- 스택/큐
- LV3
- DFS
- IMGUI
- 채팅서버
- 데디케이티드
- FPS
- 디자인 패턴
- greedy
- 재귀
- 해시
- 개인공부
- 누적합
- Ue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함