我想找到一个boost :: unordered_map的大小,它包含一个指向由std :: string映射的类的指针。我正在做一个sizeof(unordered_map var)。是对的吗?它会给我占据它的空间吗?包括房子保持它占用?想要测量它以将它与将保存相同数据的std :: map进行比较,我也将通过sizeof(std :: map var)来测量。我想知道两者各自占用多少存储空间,哪个是更好的选择,比较速度和空间。
如果我计算尺码的方式正确并且会给我实际/正确的尺码,请告诉我,并帮助我做出正确的决定。
编辑1:
如果我试图弄大小的方法是错误的,请让我知道如何获得正确的尺寸(包括管家)
TIA
-R
答案 0 :(得分:1)
sizeof()
运算符仅返回对象的大小,但不返回它在堆上占用的空间(动态分配的内存)。由于地图和字符串可能很好地在堆上分配内存,这对你没有帮助。
没有简单的方法来衡量程序某些部分的总内存占用量。但是,这并非不可能。一种选择是使用自定义分配器,它记录其内存分配,并用于与要测量的实体相关的所有对象(对于地图及其对象,包括字符串)。
答案 1 :(得分:0)
您根本无法可靠地计算地图消耗的空间量。您无法访问的类型和空间。
你应该做的是问一个完全不同的问题,你想要解决的问题与你认为必要的问题有关。