2009-11-12 2 views
1

사용 후 메모리를 재사용/재활용 할 수있는 풀 구조체가 필요합니다. 즉, 프로그램을 시작할 때 메모리를 할당해야하지만 할당 또는 할당 취소는하지 마십시오.C++ Boost에 재활용 풀 구조가 있습니까?

Boost.Pool은 이러한 메커니즘을 지원하지 않습니다. 어떤 대안이 있습니까?

답변

1

표준 힙 메커니즘은 메모리가 해제 된 후 메모리를 다시 사용합니다. 단일 어드레스 범위는 프로그램의 수명 동안 많은 다른 값에 의해 사용될 수있다. 그러나, 당신이 제안한 것처럼, 그러한 메커니즘은 런타임에 필요에 따라 시스템으로부터 메모리를 획득합니다.

적절한 크기의 메모리를 미리 할당 한 다음 할당량을 할당해야하는 경우 전역 연산자 new과 그 친구 오버로드와 같은 민감한 정보를보고 미리 할당 된 공간에서 할당을 수행하여 아마도 미리 할당 된 공간이 부족하면 예외가 발생합니다. [성인 감독없이 이것을 시도하지 마십시오. 그리고 그 감독을 위해 저를 보지 마십시오. 나는 닭이야!]

2

수영장을 만들 자마자 많은 공간을 할당하면 어떨까요? 함수 pool::orderedMalloc(n)이 그렇게하는 것 같습니다.

예, 프로세스가 시작될 때만 "런타임"에 여전히 할당됩니다.

관련 문제