【发布时间】:2017-12-20 06:16:01
【问题描述】:
我有一个boost bimap
#include <iostream>
#include <utility>
#include <boost/bimap.hpp>
#include <boost/bimap/set_of.hpp>
#include <boost/bimap/multiset_of.hpp>
namespace bimaps = boost::bimaps;
typedef boost::bimap<bimaps::set_of<unsigned long long int>,
bimaps::multiset_of<unsigned long long int > > bimap_reference;
typedef bimap_reference::value_type position;
bimap_reference numbers;
int main()
{
numbers.insert(position(12345689, 1000000000));
numbers.insert(position(23456789, 8000000000));
return 0;
}
我有大约 180000000 个条目。理论上它应该占用大约 2.7GB 的空间(180000000*8*2 = 2880000000 字节 = 2880000000/ 1024*1024*1024 = ~2.7GB)。现在我想找到boost bimap 占用的实际空间,我该怎么做。
【问题讨论】:
-
您可以重载全局
new和delete运算符并将其转发到malloc,但添加一个计数器来跟踪分配的字节。在填充bimap之前重置计数,填充它并打印字节数。 -
@MatteoItalia,谢谢,举个例子会很有帮助。
标签: c++ memory boost-bimap