我第一次使用Valgrind Analyzer。
我有一个很长的程序,所以我不能发布代码。问题是我运行程序时出现分段错误,但不是一致的。我有一个循环,当我运行它少量的迭代程序完成没有错误。当我尝试更多迭代时,我会在不同的地方出现分段错误,具体取决于循环的数量。我在ubuntu 14.04中的qt creator 3.0.1中编写了我的代码。该程序是用c ++编写的,也使用了一些opencv库。
当我运行Valgrind Memory Analyzer时,我得到了这个输出,但是不能确定问题是什么。分析器也完成了引用“** unknown error **”
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
答案 0 :(得分:0)
这是一个难以回答的问题,因为您没有提供源代码。是否可以粘贴New-Train-SVM-build / main的源代码?
在任何情况下,调试由内存泄漏引起的分段错误的例程是删除您怀疑导致seg错误的所有代码并运行程序直到tou确定不再存在内存泄漏。例如,使用linux命令top来检查增加的内存大小,当你绝对确定程序中没有内存泄漏时,你开始以最小的步骤添加代码并运行程序直到找到问题的确切原因。