-3

我想找到我拥有的 boost::unordered_map 的大小,它包含一个指向由 std::string 映射的类的指针。我正在做一个 sizeof(unordered_map var)。那正确吗?它会给我它占据的空间吗?包括它占用的房子?想要测量它以将其与保存相同数据的 std::map 进行比较,我也将通过 sizeof(std::map var) 进行测量。我想知道两者以确定每个占用多少存储空间,以及比较速度和空间,哪个是更好的选择。

请让我知道我计算尺码的方法是否正确,并将给我实际/正确的尺码,并帮助我做出正确的决定。

编辑1:

如果我尝试获取尺码的方法有误,请告诉我获取正确尺码的方法(包括看家)

TIA

-R

4

2 回答 2

1

sizeof()运算符仅返回对象的大小,但不返回它在堆上占用的空间(动态分配的内存)。由于映射和字符串可能很好地在堆上分配内存,这对您没有帮助。

没有简单的方法可以测量程序某些部分的总内存占用量。然而,这并非不可能。一种选择是使用自定义分配器,它记录其内存分配,并用于与要测量的实体相关的所有对象(用于地图及其对象,包括字符串)。

于 2016-11-06T19:55:19.680 回答
0

您根本无法可靠地计算地图使用的空间量。有些类型和空间是您无法访问的。

你应该做的是问一个完全不同的问题,这个问题与你试图解决的问题有关,你认为这是必要的。

于 2016-11-06T18:20:05.033 回答