我从以下对Mat :: Create
的调用中得到了Segmentation错误void PoissonBlend::blend(Mat& src, Mat& dst, Mat& mask, Mat& out){
Mat outer(mask.rows, mask.cols, CV_8U);
当我在gdb中运行我的程序时,我可以看到行和列都是有效的,我已经尝试了几种不同的数据类型,但不管我在这一行上得到了什么Segfault。
我的程序在调用blend之前在main()中定义了几个其他的Mats,并且它们都可以正常工作。有没有其他人遇到过这个?这个错误让我发疯,我发现这个创建调用与我程序中的任何其他调用之间没有任何区别,但每次都失败了。
我的gdb输出是:
Program received signal SIGSEGV, Segmentation fault.
_int_malloc (av=0x7ffff6fbe740 <main_arena>, bytes=307228) at malloc.c:3879
#0 _int_malloc (av=0x7ffff6fbe740 <main_arena>, bytes=307228) at malloc.c:3879
#1 0x00007ffff6c88fc5 in __GI___libc_malloc (bytes=307228) at malloc.c:2924
#2 0x00007ffff791594d in cv::fastMalloc(unsigned long) () from /usr/lib/libopencv_core.so.2.3
#3 0x00007ffff78884bc in cv::Mat::create(int, int const*, int) () from /usr/lib/libopencv_core.so.2.3
#4 0x00000000004243da in cv::Mat::create (this=0x7fffffffdab0, _rows=480, _cols=640, _type=0) at /usr/include/opencv2/core/mat.hpp:368
#5 0x0000000000427608 in cv::Mat::Mat (this=0x7fffffffdab0, _rows=480, _cols=640, _type=0) at /usr/include/opencv2/core/mat.hpp:68
#6 0x00000000004255a7 in PoissonBlend::blend (this=0x7fffffffdd13, src=..., dst=..., mask=..., out=...)
at /home/adam/WorkingCode/rasc/trunk/src/Poisson.cpp:95
#7 0x0000000000423eb2 in main () at /home/adam/WorkingCode/rasc/trunk/src/PoissonTest.cpp:45
答案 0 :(得分:0)
由于崩溃在malloc.c内,我怀疑你可能有内存损坏。尝试在Valgrind下运行程序来检测它。