程序中的异常错误

时间:2011-05-16 10:58:21

标签: c++

int maxNum(int *n)
{
    int Maximum = n[0];

    for(int i = 1; i <= 8; i++)
    {
        if( Maximum < n[i] )
            Maximum = abs(n[i]);
    }

    return Maximum;
}

void DibHomoginityDetect(CDib& dib)
{
    register int i,j,x[8];

    int w = dib.GetWidth();
    int h= dib.GetHeight();

    CDib cpy =dib;
    BYTE** ptr1 = dib.GetPtr();
    BYTE** ptr2 = cpy.GetPtr();

    for(j = 1;j<h-1;j++)
    {
        for(i=1;i<w-1;i++)
        {
            x[1]= (ptr2[j][i]-ptr2[j-1][i-1]);
            x[2] =(ptr2[j][i]-ptr2[j-1][i]);
            x[3] =(ptr2[j][i]-ptr2[j-1][i+1]);
            x[4] =(ptr2[j][i]-ptr2[j][i-1]);
            x[5] =(ptr2[j][i]-ptr2[j][i+1]);
            x[6] =(ptr2[j][i]-ptr2[j+1][i-1]);
            x[7] =(ptr2[j][i]-ptr2[j+1][i]);
            x[8] =ptr2[j][i]-ptr2[j+1][i+1];

            //assign the central pixel of window to image central pixel
            ptr1[j][i] = (BYTE)maxNum(x);
        }
    }
}

这个程序出了什么问题..据我所知它应该可以工作,但我得到异常错误...

任何人都可以告诉我,我哪里弄错了.. ..谢谢

2 个答案:

答案 0 :(得分:4)

从代码中很难说,但我猜你的for循环应该是:

for(int i = 0; i < 8; i++)

C ++中的数组是从零开始索引的,而不是一个。

答案 1 :(得分:0)

不知道这是否导致错误:

for(j = 1;j<h-1;j++)
{
    for(i=1;i<w-1;i++)
    {
        x[1]= (ptr2[j][i]-ptr2[j-1][i-1]);
        x[2] =(ptr2[j][i]-ptr2[j-1][i]);
        x[3] =(ptr2[j][i]-ptr2[j-1][i+1]);
        x[4] =(ptr2[j][i]-ptr2[j][i-1]);
            x[5] =(ptr2[j][i]-ptr2[j][i+1]);
        x[6] =(ptr2[j][i]-ptr2[j+1][i-1]);
        x[7] =(ptr2[j][i]-ptr2[j+1][i]);
        x[8] =ptr2[j][i]-ptr2[j+1][i+1];


    //assign the central pixel of window to image central pixel
    ptr1[j][i] = (BYTE)maxNum(x);   

    }
}

似乎x [1] ... x [8]始终是i=w-2j=h-2

时的值