簡體   English   中英

來自Opencv Mat :: create的Segfault

[英]Segfault from Opencv Mat::create

我從以下對Mat :: Create的調用中遇到了細分錯誤

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

由於崩潰位於malloc.c中,因此我懷疑您可能存在內存損壞。 嘗試在Valgrind下運行該程序以檢測到此情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM