2011-08-25 2 views
5

제목과 마찬가지로 : 일부 STL 컨테이너 (예 : std::vector<int> 또는 std::set<MyClass>) 유형의 개체가 주어진 나는 그들의 메모리 소비를 알고 싶습니다 --- 그것은 얼마나 많은 메모리가 요소를 저장하는 데 소비되는지, 보조 각 요소 및 컨테이너 크기에 대한 데이터 저장 한 객체가 추가 메모리를 할당하지 않는다고 가정합니다.총 STL 컨테이너 메모리 소비를 측정하는 방법은 무엇입니까?

std::vector<int> v를 들어 내가 추가 할 수 있습니다 : 벡터 요소마다 어떤 보조 데이터를 저장하지 않는

sizeof(std::vector<int>) + v.capacity()*sizeof(int) 

때문이다. 그러나 다른 용기를 위해 그것을 어떻게 할 수 있습니까?

나는 일정하지 않은 시간 복잡성으로 살아갈 수 있습니다.

+5

아마도 자신의 로깅 할당자를 제공하는 것이 가장 좋습니다. 기존 코드에서는 작동하지 않지만 컨테이너가 메모리를 할당하는시기와 방법을 정확하게 추적 할 수 있습니다. –

답변

5

자신의 STL allocator을 생성하고 배치 된 메모리 요청의 크기를 추적 한 다음 컨테이너 자체의 크기를 추가하십시오. This article은 하나를 만드는 좋은 개요를 제공합니다.

관련 문제