2011-11-17 4 views
2

RapidXML 사용하기 많은 XML 노드와 XML 속성을 만들고 파괴해야합니다. 메모리 풀 문서에서 allocate_string 함수로 메모리 풀에 생성 된 단일 문자열을 해제하는 방법이 없다는 것을 읽었습니다.RapidXml 및 메모리 풀

그러나 이런 식으로 메모리 풀의 크기가 늘어나고 더 이상 사용되지 않는 속성이나 노드에 링크 된 문자열을 삭제할 때 문제가되지 않습니다.

두려움은 너무나 역동적 인 시스템으로 메모리 풀 공간을 채우는 것입니다.이 동적 인 시스템에서는 "선험적"인 알려진 스키마없이 많은 노드를 만들고 파괴합니다.

이 문제를 건너 뛸 수있는 방법이 있습니까?

추가됨 :

독서 문서 나는 memory_pool :: set_allocator 기능을 발견하고 첫눈에 내 문제를 해결하는 것 같다. 이 함수를 사용하려고했지만 성공하지 못했습니다. set_allocator 함수를 사용한 적이 있습니까? 인터넷에서 예나 참고 문헌을 찾지 못했습니다.

답변

2

rapidxml의 메모리 풀은 할당 해제를 지원하지 않습니다 (풀 전체를 비울 수 있음). 이는 파싱하는 동안 최대 할당 성능을 제공하도록 설계되었으므로이 시나리오에서 노드를 할당 해제 할 필요가 없기 때문입니다.

수동으로 노드를 할당하고 할당을 해제해야하는 경우 새/삭제를 사용하여 힙에서 노드를 할당하지 못하게 할 수 없습니다.

여기서 set_allocator 함수는 유용하지 않습니다. 개별 노드가 아닌 전체 풀에 할당 메커니즘을 대체 할 수 있습니다.