C++ 堆大小一直增加,直到应用程序崩溃(C+;+;)

C++ 堆大小一直增加,直到应用程序崩溃(C+;+;),c++,linux,memory,memory-leaks,heap-memory,C++,Linux,Memory,Memory Leaks,Heap Memory,我想咨询一下这个问题 我有一个我正在运行的程序,从长远来看,它的内存一直在增加,直到所有资源耗尽,当然它会崩溃(需要几天才能达到临界大小) 到目前为止,我所做的是使用Valgrind,找到所有内存泄漏并修复它们,但现在我仍然有一个小内存泄漏,这是由于堆大小增加引起的,为此我使用了Valgrind massif工具 问题是,当我使用massif时,它不能运行太长时间,并且会导致应用程序在几个小时后崩溃。 我试着在一个小时的运行中找到内存泄漏,问题是最小阈值不能从内存的1%降低,1小时后我可以看到内

我想咨询一下这个问题

我有一个我正在运行的程序,从长远来看,它的内存一直在增加,直到所有资源耗尽,当然它会崩溃(需要几天才能达到临界大小)

到目前为止,我所做的是使用Valgrind,找到所有内存泄漏并修复它们,但现在我仍然有一个小内存泄漏,这是由于堆大小增加引起的,为此我使用了Valgrind massif工具

问题是,当我使用massif时,它不能运行太长时间,并且会导致应用程序在几个小时后崩溃。 我试着在一个小时的运行中找到内存泄漏,问题是最小阈值不能从内存的1%降低,1小时后我可以看到内存增加,但与应用程序的其余部分相比,它仍然很小。 所以我可以看到占用更多内存的部分,但我看不到哪些部分

example in valgrind output file:
->03.11% (4,377,152B) in 28 places, all below massif's threshold (01.00%)
有什么想法吗?

使用。
您可以链接您的程序,甚至LD_在中预加载库,它将通过生成快照来分析您的堆,这不会降低您的性能,当您看到堆已经太大时,您可以停止它并获取内存使用位置的图表

编辑:

例如:

您是否使用了valgrind和-泄漏检查-完全检查?你在用什么来使用内存?你删除了所有新的吗

也许你崩溃了,因为你正在分配一个巨大的内存空间(发生在我之前),而valgrind有时看不到它


这是“奇怪”无论如何,告诉我们答案,如果你找到它

感谢您的回复,没有“删除”的“新建”valgrind memcheck工具应该已经找到了它,所以这不是一个“没有指针的内存”问题。这更多的是一个列表,它的大小总是增加“内存泄漏”的想法,这正是我在这里发布这篇文章的原因。因为据我所知,perf工具测试性能,而不是内存使用情况,你确定google perf工具可以发现内存泄漏,甚至更重要的堆增加问题吗?是的,perf工具和tcmalloc进行堆分析,并将为你提供一个很好的内存使用图,我已经使用过无数次了。