【发布时间】:2015-03-06 23:47:08
【问题描述】:
我在嵌入式 linux 中运行我自己的 c++ 程序。起初 VSZ 为 ~6000kB(顶部),但 1 小时后 VSZ 增加 ~100kB。在程序中有两个线程。两个线程几乎一直都使用 tcp 和 ssl 连接。 我用 valgrind 在 depian linux 中运行了相同的程序。 Valgrind 没有发现任何错误。我没有找到如何将 valgrind 编译到那个嵌入式 linux 的方法。 valgrind 是否有可能无法从线程中找到所有错误?你能帮我吗?
【问题讨论】:
-
您如何断定内存使用量的增加是一个错误,而不是正确实现的内存分配?
-
执行
while(1) vector.push_back(1);的程序很快就会耗尽内存,但不是严格意义上的内存泄漏。 -
但是在程序的 edn 中应该释放这些。我的程序应该永远运行,但是当我用 valgrind 测试它时它会存在。我不明白 valgrind 应该在程序结束时找到类似的未释放内存。我已经多次查看我的代码,它只在启动时使用新的操作数。如果某个指针为空(被覆盖?),它会重新分配它,但也会打印错误,我没有看到任何错误。
标签: c++ memory-leaks tcp valgrind embedded-linux