【发布时间】:2012-08-16 19:17:18
【问题描述】:
是否可以在运行时确定 std::map/std::set(固有数据类型)的实际内存使用情况?我做了一些内存研究,似乎这在很大程度上取决于 STL 实现和所使用的系统(由于底层结构的内存填充)。我想在运行时监控这些数据类型的内存使用情况,而不运行调试器/内存分析器。有没有办法做到这一点?
【问题讨论】:
-
无论如何你都应该使用 STL 来存储指针
-
@BartekBanachewicz:我不明白你的评论。它与问题有什么关系?
-
换句话说,stdlib 容器不能保证不会复制或移动您的数据。您应该在其中存储指向对象的指针。
-
问题与内在数据类型有关,即整数、长整数、双精度等。
-
@BartekBanachewicz 即使没有,您也完全可以决定将哪些对象存储在容器中,以及它们相对于存储类型的内存占用不会改变,无论是使用指针、双精度还是魔术超级对象。使用指针而不是值作为一般建议只是完全垃圾,并且取决于特定的类型和情况。您还可以从容器类型中推断出明显的保证,因为标准对重新分配和复杂性做出了断言(即使标准允许,也没有人无故复制元素)。
标签: c++ memory-management stl