1

我有一个接收一些事件的 C++ 服务,这些事件在处理后被写入文件,直到消息在内存中,因此我有一个存储事件的大数据结构。

写入完成后,我会清理存储内存的所有结构,但即使在此之后内存也不会下降。我有所有共享的指针,所以即使我遗漏了一些东西,最终这些指针也应该被清理一段时间,但即使这样也没有发生。

我在服务上运行了 valgrind,但它没有显示任何内存泄漏。我想检查是否有某种方法可以检查,内存在哪里被占用?

4

1 回答 1

1

这很正常。释放内存几乎总是纯粹的效率损失,现代系统避免了它。

如果其他东西不需要内存,那么释放它的努力显然是浪费的。如果其他东西需要它,它仍然是浪费的,因为操作系统只需要再次使用它,取消它为使其免费所做的工作。

现代系统直接将内存从一种用途转移到另一种用途,而不会在中间释放它,除非他们别无选择。

于 2013-11-11T19:01:05.870 回答