EXC_BAD_ACCESS使用数组

时间:2015-12-08 18:03:39

标签: c arrays exc-bad-access

我需要帮助找出这个错误究竟是什么以及它为什么会发生。当我破坏程序时,一切似乎都工作得很好!我不懂。

代码:

 void WordsRandom()
{
    srand((unsigned)time(NULL));
    n = rand() % 10;
    checkRandom[k] = n;  //ERROR HERE -->  THREAD 1: EXC_BAD_ACCESS
    k ++; //k is set to 0 originally
    rowRandom = getRandomNumber();
    colRandom = getRandomNumber();
}

我不知道为什么会这样。据我所知,在这种情况下,没有必要使用%d说明符吗?如果您需要更多代码,请告诉我。

其他方法正在调用

WordsRandom

void horizontalOrientation()
{
    size = (int)strlen(words[n]);
    if((colRandom + (size - 1)) <= 9)
    {
        for(int j = 0; j < (strlen(words[n])); j ++)
        {
            puzzle[rowRandom][colRandom] = words[n][j];
            colRandom ++;
        }
    }
    else
    {
        do
        {
            WordsRandom();
            horizontalOrientation();
        }while((colRandom + (size - 1)) > 9);
   }
}

对于垂直和对角线方向,我有类似的其他功能。

1 个答案:

答案 0 :(得分:0)

这里有两件事很麻烦:

我没有看到数组大小(checkRandom [])的声明或者你用来索引它的整数值(k)。如果您收到访问错误,那么您可能会将超出阵列边界的索引编入您的内存中。

我尝试重构您的代码,以便检查您是否未通过数组的最大索引(大小为-1)