티스토리 뷰

공부/C++

[C++] 메모리 풀 1

굥굔 2023. 3. 30. 00:44

메모리 풀 이란?

C에서는 malloc C++에서는 new를 통한 데이터 할당이 아닌, 큰 사이즈의 메모리 블록을 할당하여 malloc/new 연산자와 유사한 메모리 동적할당을 가능하게 해주는 것.

 

왜 메모리 풀을 사용해야 하나요?

malloc/new 연산자는 다양한 블록 사이즈 때문에 단편화를 유발하고 파편화 된 메모리는 사용할 수 없게된다. 이를 극복한 방법이 메모리 풀 이다. 또한 malloc/new 연산자를 통한 데이터 할당은 시스템 콜을 하기 때문에 발생하는 오버헤드도 있기 때문에 메모리 풀을 사용하는 것이 좋다.

또한 풀 내에 할당된 오브젝트들을 해제할때 한번의 조작으로 모든 오브젝트의 해제가 가능하다.

 

메모리 풀의 종류

고정 메모리풀과 가변 메모리풀이 있다.

 

고정 메모리 풀

반환된 메모리를 효율적으로 재사용 가능. 구현이 쉽다. 캐시 효율이 좋다.

 

메모리 풀의 동작 방식

  1. 풀들로부터 메모리를 할당. 함수는 필요한 블록이 적합한 풀을 결정. 풀의 모든 블록들이 이미 예약되어 있다면, 함수는 그 다음으로 큰 풀에서 찾기를 시도한다. 할당된 메모리 블록은 핸들에 의해서 표현된다.
  2. 할당된 메모리에 대한 액세스 포인터 접근.
  3. 이전에 할당되었던 메모리 블록 해제.
  4. 풀과 메모리 블록 인덱스는 핸들에 대응되는 블록에 빠르게 접근할 수 있게 해주고, 이미 해제된 메모리 블록의 핸들을 감지하도록 해준다.

 

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
링크
«   2025/06   »
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
글 보관함