-
메모리 풀과 오브젝트 풀프로그래밍/내 라이브러리 2021. 2. 7. 16:24반응형
예전에 만들어 본 메모리 풀이 있는데, 최근 보니 코드가 가운데 정렬되어 있길래 글을 지우고 겸사겸사 새로 만들었다.
고정된 크기의 메모리를 풀링하는 FixedSizeMemoryPool과 오브젝트를 풀링하는 ObjectPool이다.
별도의 테스트는 하지 않았고 기존 코드를 조금 가다듬어 표기법과 인덴트만 편집 했다. ^ㅅ^github.com/zepeh92/FixedSizeMemoryPool.git
zepeh92/FixedSizeMemoryPool
Contribute to zepeh92/FixedSizeMemoryPool development by creating an account on GitHub.
github.com
github.com/zepeh92/ObjectPool.git
zepeh92/ObjectPool
Contribute to zepeh92/ObjectPool development by creating an account on GitHub.
github.com
할당한 메모리 그 자체들을 노드로 쓰기 때문에, 최소 할당 단위는 포인터의 크기(sizeof(void*)) 로 잡혀야 한다.
초기 상태 할당 시 맨 앞 노드를 반환 대상으로 설정하고, 맨 앞 노드가 가진 값으로 다음 노드를 찾아 그 곳을 맨 앞으로 설정한다.
할당 시 해제 시 해제한 메모리에 기존 맨 앞 노드 포인터를 저장하고, 맨 앞 노드를 해제한 메모리로 설정한다.
해제 시 맨 앞 노드가 NULL이면 풀에 메모리가 없다는 뜻이므로 메모리 덩이를 할당 한다.
그리고 오브젝트 풀은 기존 메모리 풀에 생성자, 소멸자만 추가로 호출해주는 정도가 전부이다.
반응형'프로그래밍 > 내 라이브러리' 카테고리의 다른 글
주말을 맞아 히토미 다운로더를 만들어봤다. (0) 2018.08.11