C++ 段错误问题

标签 c++ image-processing segmentation-fault openframeworks

我正在尝试编写一个程序,该程序通过网络摄像头源创建各种过滤器,但遇到了 BLOB 分析和其他一些问题。

每次激活 grassfire 功能时,我都会收到 segFault。 这是我的 grassfire 函数的代码:

void testApp::grassFire(int mask_Y, int mask_X, unsigned char labelCnt)
{
    blobArray[mask_Y * camWidth + mask_X] = labelCnt;
    if (mask_X + 1 <= camWidth - 1 && blobArray[mask_Y * camWidth + mask_X + 1] == 0)
       grassFire(mask_Y, mask_X + 1, labelCnt);
    if (mask_Y + 1 <= camHeight - 1 && blobArray[(mask_Y + 1) * camWidth + mask_X] == 0)
       grassFire(mask_Y + 1, mask_X, labelCnt);
    if (mask_X - 1 >= 0 && blobArray[mask_Y * camWidth + mask_X - 1] == 0)
       grassFire(mask_Y, mask_X - 1, labelCnt);
    if (mask_Y - 1 >= 0 && blobArray[(mask_Y - 1) * camWidth + mask_X] == 0)
       grassFire(mask_Y - 1, mask_X, labelCnt);
}

它的调用方式是通过一个运行每一帧的开关盒 这意味着它会在每一帧更新时被调用

函数本身在任何其他范围之外声明。

我知道它是一个非常重的过滤器,它可能会使用大量内存,但与其他一些过滤器相比,它还不错,所以我不明白为什么会出现段错误。

我还在另一个过滤器上遇到了 segFault,这对内存使用要求不高。 我在 win 7 的代码块中使用 openframeworks。

最佳答案

由于您进行了一些检查,因此您似乎无法读取/写入粘贴 blobArray 的末尾,所以这意味着您是 stack overflow 的受害者.

您应该使用调试器并运行回溯,许多调用无法隐藏。

关于C++ 段错误问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14176638/

相关文章:

c++ - 如何指定方法更改了哪些数据成员?

c++ - 没有名字的类(class)

android - 在将图像发送到设备之前,我是否需要从图像中删除 p3 色域?

c++ - 锁定互斥量导致的段错误

C++ 访问 vector 的 vector 出现段错误

c++ - 故障排除段错误

c++ - 无法将对象上的指针添加到集合

c++ - std::swap() 是如何实现的?

r - R 中的边缘检测、图像处理和最终数据提取

c++ - 检测视频流上的几何对象并重建其轮廓