You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode中C语言冒泡排序函数出现Bad Access错误求助

问题排查:bubbleSort1 函数的 Bad Access 错误

嘿,我一眼就揪出你代码里的问题啦!你的 bubbleSort1 函数内层循环的条件写错了变量,这直接导致数组越界访问,触发了 Bad Access 错误。

错误根源

看这段出问题的代码:

for (j = 0; i < n-i-1; j++)

这里的循环条件误用了外层循环的变量 i,而不是内层循环的变量 j!正确的条件应该是 j < n-i-1。

为什么这会引发错误?

  • 当外层循环的 i 较小时,i < n-i-1 这个条件会一直为真,导致 j 无限制地递增
  • 当 j 的值超过数组的最大索引时,代码会访问数组边界之外的内存,这就触发了系统的内存访问保护机制,也就是你看到的 Bad Access 错误

修正后的 bubbleSort1 函数

void bubbleSort1(int arr[], int n) { 
    int i, j; 
    for (i = 0; i < n-1; i++) 
        // 把条件里的 i 改成 j 即可
        for (j = 0; j < n-i-1; j++) 
            if(arr[j] > arr[j+1]) 
                swap(&arr[j], &arr[j+1]); 
}

修改后,内层循环会正确遍历到未排序部分的末尾,不会再出现越界访问的问题啦。

内容的提问来源于stack exchange,提问作者Nooblhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:04:00