2011-08-25 30 views
5

Như trong tiêu đề: đưa ra một đối tượng kiểu của một số container STL (ví dụ: std::vector<int> hoặc std::set<MyClass>) Tôi muốn biết mức tiêu thụ bộ nhớ của họ --- đó là --- bộ nhớ được tiêu thụ bao nhiêu để lưu trữ các phần tử dữ liệu cho từng phần tử và kích thước vùng chứa. Tôi giả định rằng các đối tượng được lưu trữ không phân bổ bất kỳ bộ nhớ bổ sung nào.Làm thế nào để đo tổng số tiêu thụ bộ nhớ STL container?

Đối với một std::vector<int> v tôi có thể thêm:

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

vì vectơ không lưu trữ bất kỳ dữ liệu phụ trợ cho mỗi phần tử. Nhưng làm thế nào tôi có thể làm điều đó cho các container khác?

Tôi có thể sống với độ phức tạp về thời gian không liên tục.

+5

Có lẽ tốt nhất là cung cấp trình cấp phát ghi nhật ký của riêng bạn. Điều đó sẽ không hoạt động với mã hiện có, nhưng nó sẽ cho phép bạn theo dõi chính xác thời gian và cách thức các bộ chứa cấp phát bộ nhớ. –

Trả lời

5

Tạo riêng của bạn STL allocator và theo dõi kích thước của các yêu cầu bộ nhớ được đặt cho nó, sau đó jsut thêm kích thước của chính vùng chứa đó. This article cung cấp một cái nhìn tổng quan về việc tạo một.

Các vấn đề liên quan