【发布时间】:2010-07-03 19:52:54
【问题描述】:
我有一个名为 OGLSHAPE 的类的 std::vector。
每个形状都有一个 SHAPECONTOUR 结构的向量,它有一个浮点向量和一个双精度向量。它还有一个大纲结构的向量,其中有一个浮点向量。
最初,我的程序使用 8.7 MB 内存启动。我注意到,当我开始填充这些内容时,例如添加双精度和浮点数,内存很快就变得相当高,然后趋于平稳。当我清除 OGLSHAPE 向量时,仍然使用了大约 19MB。然后,如果我再推大约 150 个形状,然后清除它们,我现在使用大约 19.3MB 的内存。从逻辑上讲,如果第一次从 8.7 上升到 19,那么下一次它会上升到 30 左右。我不确定它是什么。我以为这是内存泄漏,但现在我不确定。我所做的只是将数字推入 std::vectors,仅此而已。所以我希望能找回我所有的记忆。这是什么原因造成的?
谢谢
*编辑,好吧它的内存碎片 从分配很多小东西, 怎么解决?
【问题讨论】:
-
您在哪个平台上以及如何测量内存“使用情况”?
-
“是什么原因造成的?” OGLSHAPE 中的内存泄漏很容易做到。
-
您有机会发布您的代码的简化版本吗?
-
你为什么要用 C 标签来标记一个关于 std::vector 的问题???对于我们这些想要回答 C 问题的人来说,这是一种痛苦。
-
使用 Windows 任务管理器验证内存使用情况