繁体   English   中英

简单的Mac OSX C程序中的总线错误

[英]bus error in simple Mac OSX C program

我正在编写一个简单的C程序来创建十二个色调矩阵。 代码可以编译,但是出现运行时错误“ Bus Error”。 在调试器中,它显示EXC_BAD_ACCESS

int main ()
{
    int j,k,l;
    int twelve[13][13];
    void mat(int twelve[13][13]);
    printf("input original tone row \n");
    for(j=0;j<=11;j++)
    {
        scanf("%2i",&twelve[j][0]);
    }
    mat(twelve);

    for(k=0;k<=11;k++)
    {
        for(l=0;l<=11;l++)
        {
            printf("%i ",twelve[l][k]);
        }
        printf("\n");
    }
    return 0;
}

void mat(twelve)
    int twelve[13][13];
{
    int j,k,l;
    int temp;
    /*inversion*/
    for(j=1;j<=11;j++)
    {
        twelve[0][j] = 12 - twelve[j][0];
    }
    /*fill in columns*/
    /*this sections seems to be what's crashing it */
    for(k=1;k<=11;k++)
    {
        for(l=1;1<=11;l++)
        {
            temp = twelve[0][k] + twelve[l][0];
            if(temp >= 12)
            {
                twelve[k][l] = temp - 12;
            }
            else 
            {
                twelve[k][l] = temp;
            }
        }
    }
}

mat()子例程的内循环条件中有一个错字。

这就是为什么我不喜欢'l'(el)作为索引的原因。

for(l=1;1<=11;l++)

您的意思是“ l <11”(el)而不是“ 1 <11”(一个)

1总是小于11,因此l(el)索引无限制地增加,当索引太大时会导致非法的内存访问。

从代码底部开始大约10行,您将获得以下语句:

{for(l=1;1<=11;l++)

应该是

{for(l=1;l<=11;l++)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM