문제

그래픽 프로그래밍을하고 있으며 정점 풀을 사용하고 있습니다. 수영장 밖에서 범위를 할당하고 그림을 그리는 데 사용할 수 있기를 원합니다.

C 할당 자보다 필요한 솔루션과 다른 점은 Malloc이라고 부르지 않는다는 것입니다. 대신 나는 배열을 prealloce로서 배치 한 다음 그것을 감싸고 여유 공간을 추적하고 내가 전달한 할당에서 범위 (시작/끝 포인터)를 할당하는 객체가 필요합니다.

감사합니다.

도움이 되었습니까?

해결책

일반적으로 : 당신은 (Wikipedia 참조) 메모리 풀 (같은 부스트 :: 풀 Tokenmacguy의 대답). 그들은 많은 맛으로옵니다. 중요한 고려 사항 :

  • 블록 크기 (고정 또는 가변; 다른 블록 크기의 수; 블록 크기 사용량을 예측할 수 있습니까 (통계적으로)?
  • 효율성 (일부 관리자는 2^N 블록 크기, 즉 가장 잘 맞는 블록을 검색하는 네트워크 스택에 사용하기위한 2^N 블록 크기를 가지고 있습니다.
  • 관리 오버 헤드 (나는 당신이 매우 작은 블록을 많이 가지고 있다고 가정합니다. 따라서 메모리 관리자가 유지 관리하는 INT와 포인터의 수는 효율성에 중요합니다)

부스트 :: 풀의 경우 간단한 분리 된 스토리지 볼만한 가치가 있습니다. 최상의 경기를 검색하는 다양한 블록 크기의 메모리 풀을 구성 할 수 있습니다.

다른 팁

부스트 :: 풀 당신을 위해 이것을 아주 잘합니다!

대신 나는 배열을 prealloce로서 배치 한 다음 그것을 감싸고 여유 공간을 추적하고 내가 전달한 할당에서 범위 (시작/끝 포인터)를 할당하는 객체가 필요합니다.

그게 원래 Malloc ()가 내부적으로하는 일 (Malloc ()는이 "Preallocated Array"의 크기를 가득 찼다면). 그렇습니다. 알고리즘이 있습니다. 실제로 많은 것이 있습니다 위키 백과 기본 개요를 제공합니다. 다른 전략은 다른 상황에서 더 잘 작동 할 수 있습니다. (예 : 모든 블록이 비슷한 크기인지 또는 할당 및 자유에 대한 패턴이있는 경우)

같은 크기의 객체가 많으면 장애물을 살펴보십시오.

당신은 아마도 코드를 직접 쓰고 싶지 않을 것입니다. 쉬운 일이 아니며 버그는 고통 스러울 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top