반응형
object_pool은 pool의 클래스 할당 및 해제 버전으로 보면 이해하기 쉽습니다. pool과 사용법이 유사한데 틀린점은 construct와 destory 함수를 이용하여 할당 및 해제를 한다는 점입니다. 또한 construct 함수를 호출할 때 생성 인자를 넣어서 생성할 수도 있습니다. 단, 아쉽게도 생성인자는 3개까지 지원합니다.
new 재정의로 메모리 풀을 적용하지 않은 클래스에 대하여 생성시점에서 메모리풀을 사용하기에 좋습니다.
간단한 예를 살펴보도록 하겠습니다.
#include <iostream>
#include <boost/pool/object_pool.hpp>
using namespace std;
class test_mpa2
{
private:
char test_[256];
public:
test_mpa2(const char* str)
{
strcpy_s(test_, 256, str);
}
void test()
{
cout << test_ << endl;
}
};
int main(int argc, char* argv[])
{
boost::object_pool<test_mpa2> pool;
test_mpa2* test = pool.construct("hello, object_pool");
test->test();
pool.destroy(test);
return 0;
}
예제에서 처럼 메모리풀 생성 인자에 사용할 클래스를 넣어주고 생성하면 됩니다. 그 뒤로 사용은 construct를 클래스 생성자처럼 사용하여 메모리를 할당받으며 되며 destroy로 메모리를 해제시켜 주면 됩니다.
반응형
'강좌' 카테고리의 다른 글
C++ 코루틴(coroutine) 활용 강좌: #1 시작하며 그리고 기본 개념 (0) | 2022.05.19 |
---|---|
C++ REST API 사용 강좌 : #2 HTTP POST (boost beast 활용) (2) | 2022.05.12 |
C++ REST API 사용 강좌 : #1 HTTP GET (boost beast 활용) (0) | 2022.05.11 |
C++ boost 메모리풀 강좌 #5: boost 메모리풀 할당자를 적용하여 STL 컬렉션의 성능 향상시키기 (0) | 2021.11.15 |
C++ boost 메모리풀 강좌 #3: singleton_pool 클래스를 이용하여 일반 클래스에 메모리풀 적용하기 (0) | 2021.11.13 |
C++ boost 메모리풀 강좌 #2: pool 클래스를 이용하여 버퍼에 메모리풀 적용하기 (0) | 2021.11.12 |
C++ boost 메모리풀 강좌 #1: 메모리풀의 개념 (0) | 2021.11.11 |
병렬처리 개념 강좌: #6 설계 관련 팁 (0) | 2021.11.09 |