c - EXC_BAD_ACCESS 使用数组时出错

标签 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);
   }
}

我还有与垂直和对角线方向类似的其他函数。

最佳答案

这里有两件事很麻烦:

我没有看到数组大小 (checkRandom[]) 或用于索引它的整数值 (k) 的声明。如果您收到访问错误,则很可能您正在超出数组边界的索引进入不属于您的内存。

我会尝试重构您的代码,以便您可以检查是否传递了数组的最大索引(大小 -1)

关于c - EXC_BAD_ACCESS 使用数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34162882/

相关文章:

c - 如何在c中从字符串中分离和存储元素?

c++ - TerminateThread() with CloseHandle() on thread which uses only stack plain variables (without alloc) 泄漏内存?

c - 重定向后没有这样的文件或目录 - 简单的命令行程序

arrays - 仅当它是插入时如何推送数组元素

iphone - 如何诊断 KERN_PROTECTION_FAILURE

Iphone 核心数据在保存时崩溃

ios - EXC_BAD_ACCESS 在使用 UIWebView 对 ViewController 执行 segue 时?

c - 使用字符串 C 程序/Popen 时出现段错误

c - 如何将字符指针数组作为 void * 传递,然后转换回字符指针数组?

arrays - 为什么 Bash 不用新数组覆盖我的数组?