메모리 풀이라면 메모리 영역을 일정크기로 미리 할당을 한후 필요할때마다 거기서 꺼내쓰고 필요없으면 다시 저장하고 ....로 알고 있습니다
근데 간혹 사이트들을 보면 아래와같은 메모리풀이 있습니다
(viewtopic.php?t=4295&highlight=%BA%CE%C7%CF 사이트 참조)
그렇다면 아래의 코드는 stl 의 메모리풀에서 내부적으로 메모리 풀의 역활을 해주는건가요?
해준다면 미리 어느정도의 크기를.... 할당해놓은가요?? (한글이 헷갈리네요 ㅠㅠ )
Code: Select all
#include "stdafx.h"
#include <stdio.h>
#include <xmemory>
using std::allocator;
class test
{
public:
test(void){}
~test(void){}
int a;
static void *operator new(size_t size)
{
return pool.allocate(size);
}
static void operator delete(void *p, size_t size)
{
pool.deallocate((test *)p, size);
}
static void *operator new[](size_t size)
{
return pool.allocate(size);
}
static void operator delete[](void *p, size_t size)
{
pool.deallocate((test *)p, size);
}
static allocator<test> pool;
};
allocator<test> test::pool;
int _tmain(int argc, _TCHAR* argv[])
{
test *p;
p = new test;
delete p;
p = new test[10];
delete [] p;
return 0;
}