【发布时间】:2012-03-22 21:20:08
【问题描述】:
作为昨天发布的Memory consumption of a pointer to vector of pointers 的后续问题,我还有另一个问题是关于 boost ptr_map 的内存使用情况,键类型为 A 类(现在假设为 int),值为 (指向)某种类型的指针向量(再次假设为 int),这是一个 ptr_map。我读过How can i estimate memory usage of std::map?这个问题,STL映射的内存消耗一般是
(sizeof(A) + sizeof(B) + ELEMENT_OVERHEAD) * N + CONTAINER_OVERHEAD
我的问题是这样的设计元素开销有多大,相对于
sizeof(A) + sizeof(B)
假设类型 A 和 B(这里假设 A 是 int,而 B 是指向 int 指针向量的指针),我想即使是通常的 STL 映射的答案也会有所帮助。另外,我想知道如果可能的话,如果 A 更复杂,事情会如何/是否发生变化。我猜元素开销也会随着 A 的复杂性而增长?元素开销是否受限于 A 和 B 大小之和的一部分?我担心的是,如果元素开销是没有真正界限的很大一部分,那么使用地图的全部意义似乎就不再吸引人了。
【问题讨论】:
-
这些开销通常是恒定的,并且与键和值无关。
-
谢谢.. 但是与 sizeof(int) 相比,您知道元素开销有多大(我不关心容器开销)吗?这乘以 N,所以如果 N 很大,它就很重要。
-
与任何相当大的向量使用的内存相比都很小。