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
相关产品推荐
相关产品推荐

