2012-11-15 2 views
5

과 파생 클래스에서 모두 작동하는 메모리 풀을 갖는 일반적인 알고리즘 또는 구현이 있습니까? 특정 클래스 A에 대해서만 O (1)에서 작동하는 메모리 풀을 만드는 것은 매우 쉽습니다. 예를 들어, 큰 덩어리 인 데이터를 할당하고, 즉 10*sizeof(A)을 할당 한 다음 할당이 필요할 때마다 sizeof(A) 크기의 1 블록을 제공합니다.클래스 및 그 파생 클래스에 대한 C++ 메모리 풀

더 큰 크기를 가진 A의 파생 클래스를 고려할 때 이러한 간단한 구현이 있습니까? 감사합니다.

+2

왜 구체적인 메모리 풀이 필요합니까? 포인터를 저장하고 힙을 사용할 수 없습니까? – Jack

+0

그것은 연산자 new 및 operator delete에 대한 연습을위한 이론적 인 질문 일뿐입니다. – lezebulon

+0

내가 생각할 수있는 유일한 접근 방법은 큰 관리 문제 (구멍과 메모리 덩어리 내부의 모든 것)를 만드는 것이 단계 크기로 사용하는 것입니다 계층 트리에서 가장 큰 클래스의 크기. 클래스가 근본적으로 다르지 않으면 많은 공간을 낭비하지 않습니다. – Jack

답변

1

정말 단순한 정의에 달려 있습니다. Jack이 말했듯이 파생 클래스 중 가장 큰 크기를 메모리 풀인 배열의 요소 크기로 사용할 수 있습니다. 그것은 확실히 간단한 구현입니다.

일부 유형이 가장 큰 유형의 절반 이하인 경우 두 번째 인스턴스가 호환 가능한 인스턴스를 차지하는 슬롯을 차지할 수 있도록 구현을 수정할 수 있습니다. 해당하는 경우 분기 크기 유형까지 확장 할 수 있습니다.

관련 문제