我的代码中有内存泄漏。随着流的触发,堆继续增加。在我的代码中,我有一个 while(1) 循环,它基本上在队列中等待。当从 web 服务触发该流时,传入的 msg 被推送到队列中,并调用 c++ 中的一个方法,该方法获取消息并以图形的形式实现流。
对于每个触发器,我发现堆中的内存增加了 604kb。我需要解决这个问题。
我停止了服务 [在产品中运行的二进制文件]。
我用 valgrind 启动了服务 [将二进制文件作为 valgrind 的输入]
valgrind --log-file=/home/valgrind-output.txt --leak-check=full <service binary>
但是,当二进制文件运行时,它不会显示任何泄漏,只有当我停止服务时,我才会看到一些泄漏。但这些是一次性泄漏,一旦我们重新启动服务就会被清除。[二进制]。
当每个流程被触发时,我有意在流程开始时添加了一个分配。
int *p = new int[10];
并添加了一个日志。每次触发流程时,我都会看到日志打印。但我没有看到 valgrind 在输出文件中出现任何泄漏。
如何检查每个流调用之间的泄漏?valgrind 是否仅在调用 main 结束时才消除泄漏?在这种情况下,如何动态检查我的代码导致了什么泄漏。如果我需要安装任何其他检测器?请建议。这会很有帮助。谢谢。