瓦尔格林德内存分析器结果

Valgrind Memory Analyzer results

本文关键字:分析器 结果 内存 林德      更新时间:2023-10-16

我是第一次使用Valgrind分析仪。

我有一个很长的程序,所以我不能发布代码。问题是我在运行程序时遇到分段错误,但不一致。我有一个循环,当我运行它进行少量迭代时,程序完成没有错误。当我尝试更多迭代时,我会在不同的地方出现分段错误,具体取决于循环的数量。我在 ubuntu 14.04 的 qt creator 3.0.1 中编写代码。该程序是用c ++编写的,并且还使用了一些opencv库。

当我运行Valgrind内存分析器时,我得到这个输出,但无法真正弄清楚问题是什么。此外,分析器以引号"**未知错误**"结束

Invalid write of size 4 in main in /home/esigalas/qt-workspace/builds/New-Train-SVM-build/main Address 0xffed6e770 is on thread 1's stack
1: main in /home/esigalas/qt-workspace/builds/New-Train-SVM-build/main
Invalid write of size 2 in main in /home/esigalas/qt-workspace/builds/New-Train-SVM-build/main
1: main in /home/esigalas/qt-workspace/builds/New-Train-SVM-build/main
Address 0x30c40d74 is 20 bytes after a block of size 3,392 alloc'd
1: malloc in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
2: cv::fastMalloc(unsigned long) in /usr/local/lib/libopencv_core.so.2.4.9
3: cv::Mat::create(int, int const*, int) in /usr/local/lib/libopencv_core.so.2.4.9
4: cv::_OutputArray::create(int, int, int, int, bool, int) const in /usr/local/lib/libopencv_core.so.2.4.9
5: cv::Mat::copyTo(cv::_OutputArray const&) const in /usr/local/lib/libopencv_core.so.2.4.9
6: main in /home/esigalas/qt-workspace/builds/New-Train-SVM-build/main

这是一个很难回答的问题,因为您没有提供源代码。是否可以粘贴New-Train-SVM-build/main的源代码?

在任何情况下,调试由内存泄漏引起的分段错误的例程是删除您怀疑导致 seg 错误的所有代码并运行程序,直到 tou 确定不再有内存泄漏。例如,使用 linux 命令 top 检查内存大小是否增加,当您绝对确定程序中没有内存泄漏时,您开始以最少的步骤添加代码并运行程序,直到找到问题的确切原因。